Information :
Voici un script PHP qui permet de récupérer les mots de passe perdus.
Il faut entrer le nom de son compte et son adresse email et un courriel sera envoyé indiquant le nouveau mot de passe.
Ajouter un champ dans la base de données :
Pour que ce script soit utilisable, vous devez ajouter le champ 'reset_password' VARCHAR (50) NOT NULL dans la table account de la base realmd.
Le script :
Code PHP :
<?php
// Configuration
$cfg_server_name = ''; // Nom de votre serveur
$cfg_realmdb = array(
'db_host'=> 'localhost', //Hôte BDD
'db_username' => 'root',//Utilisateur BDD
'db_password' => '',//Mot de passe BDD
'db_name'=> 'realmd',//Nom de la base de données Reamld
);
$cfg_mail = array(
'path_to_thisfile' => 'http://monsite.com/lostPass.php', // Le chemin vers le fichier contenant le script
'email_from' => '', // Adresse email qui enverra les mails
'email_subject' => '['.$cfg_server_name.'] Réinitialisation de mot de passe', // Sujet du mail
);
// FIN DE CONFIGURATION
/*********************************************************************************/
// Implémentation
function sha_pass($user, $pass){
return sha1(strtoupper($user).':'.strtoupper($pass));
}
function random_string($counts){
$str = "abcdefghijklmnopqrstuvwxyz";//Count 0-25
for($i = 0; $i < $counts; ++$i){
if ($o == 1){
$output .= rand(0, 9);
}
else{
$o++;
$output .= $str[rand(0, 25)];
}
$o = rand(0, 1);
}
return $output;
}
$db = mysql_connect($cfg_realmdb[db_host], $cfg_realmdb[db_username], $cfg_realmdb[db_password], true);
mysql_select_db($realmd[db_name], $db);
//this is where user fill in and send by email
if ($_POST[password_takeback]){
$username = mysql_escape_string($_POST[username]);
$email = mysql_escape_string($_POST[email]);
$check_account = mysql_query("SELECT id FROM `account` WHERE username='".$username."' AND email='".$email."'", $db);
if(isset($_POST['username']) && isset($_POST['email']) && mysql_num_rows($check_account)){
$newpass = random_string(8);
$newhash = sha_pass($newpass);
mysql_query("UPDATE `account` SET sha_pass_hash='".$newhash."' WHERE username='".$username."'", $db);
$to = mysql_escape_string($_POST["email"]);
$from = "From: $config[email_from]";
$subject = $cfg_mail[email_subject];
$message= "Bonjour ".$username.",
Vous avez demandé une récupération de mot de passe pour votre compte sur le royaume ".$cfg_server_name.".
Voici vos nouvelles informations de connexion :
Nom d'utilisateur : ".$username."
Mot de passe : ".$newpass."
En cas de problème, contactez nous !
Bon jeu sur ".$cfg_server_name." !";
mail($to, $subject, $message, $from);
$out = "Un email vous a été envoyé avec vos informations de connexion.
<i>Note : Si vous ne recevez pas le mail, vérifiez qu'il n'ait pas été bloqué par votre filtre anti-spam.
Sinon, veuillez nous contacter.</i>";
}else{
$out = "Informations erronées, veuillez vérifier l'email ou le nom de compte.";
}
}
else{
$out = '
<form action="'.$_SERVER[PHP_SELF]'" method="POST">
Adresse Email : <input type="text" name="email">
Nom de compte : <input type="text" name="username">
<input type="submit" name="password_takeback">
</form>';
}
mysql_close($db);
print $out;
?>
Sources : http://getmangos.com/community/topic/115...r-website/ | corrigé par benjy