PHP Récupération de mot de passe // MaNGOS
"$cfg_realmdb[db_host]"
On utilise 'db_host' (même si PHP, dans sa laideur, va comprendre que ce n'est pas une constante - même s'il générera une notice qui sera sûrement étouffée par le serveur).
"mysql_escape_string"
On utilise mysql_real_escape_string (cf la doc).

"if(isset($_POST['username']) && isset($_POST['email']) && mysql_num_rows($check_account)){"
Après avoir fait la requête utilisant les 2 valeurs _POST ?
"<input type="submit" name="password_takeback">"
Question de préférence mais étant puriste en XML, c'est /> (car pas de balise de fin toussqh).
(24-04-2011 22:43)Vendethiel a écrit :  "$cfg_realmdb[db_host]"
On utilise 'db_host' (même si PHP, dans sa laideur, va comprendre que ce n'est pas une constante - même s'il générera une notice qui sera sûrement étouffée par le serveur).
"mysql_escape_string"
On utilise mysql_real_escape_string (cf la doc).

"if(isset($_POST['username']) && isset($_POST['email']) && mysql_num_rows($check_account)){"
Après avoir fait la requête utilisant les 2 valeurs _POST ?
"<input type="submit" name="password_takeback">"
Question de préférence mais étant puriste en XML, c'est /> (car pas de balise de fin toussqh).
Je n'ai fait que copier coller le premier code sans le reprendre à 100%, ce genre de code ne me ressemble pas, j'essaie un maximum de respecter les normes.
Ca n'aurait tenu qu'à moi, je l'aurai repris à 100%, mais sur un plan humain, ça aurait été de l'irrespect pour l'auteur.
Ensuite, pour le input, ce n'est pas une question de préférence, cela dépend de si tu fais du HTML ou du xHTML.
Le xHTML étant XML, tu dois mettre le / à la fin de toute balise seule comme img, input, br, area, etc. sinon W3C te sorts une belle erreur.
En revanche, en HTML, les normes ne l'imposent pas donc ça passe.
Pour ma part, je préfère et j'utilise le xHTML.
Il n'est pas de moi ! J'avais oublié de mettre la source et je l'avais aussi un peu perdue...
(cf http://getmangos.com/community/topic/115...-website/)
Quand je parle de préférence je parle bien sûr de choix entre HTML et xHTML ...
(18-04-2011 04:39)benjy a écrit :  Bonjour,

Petit nettoyage du code, suppression des éléments qui me semblent inutiles, éclaircissement du code, et crrections multiples.
Je n'ai pas testé, il est possible qu'ils restent une ou deux erreurs.
[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{
$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($cfg_realmdb["db_name"], $db);

//this is where user fill in and send by email
if ($_POST['password_takeback']){
$username = trim(mysql_escape_string($_POST['username']));
$email = trim(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($username, $newpass);
mysql_query("UPDATE `account` SET sha_pass_hash='".$newhash."' WHERE username='".$username."'", $db);
$to = mysql_escape_string($_POST["email"]);
$from = "From: $cfg_mail['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.<br>
<em>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.</em>";
}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"><br>
Nom de compte : <input type="text" name="username"><br>
<input type="submit" name="password_takeback">
</form>';
}

mysql_close($db);
print $out;
?>
[/code]

Merci sa marche Clin
Bonjour j'ai une erreur avec mon code j'ai bien tout rempli avec le lien de Benjy et j'ai l'erreur.
Code PHP :
Parse errorsyntax errorunexpected T_ENCAPSED_AND_WHITESPACEexpecting T_STRING or T_VARIABLE or T_NUM_STRING in recup.php on line 51 

Et à la ligne 51 l'email from.

J'ai mis
Code PHP :
'email_from' => '[email protected]'// Adresse email qui enverra les mails 
j'ai mis n'importe quel email est-ce que je dois mettre une email existante ?
(31-05-2011 16:53)niko27 a écrit :  J'ai mis
Code PHP :
'email_from' => '[email protected]'// Adresse email qui enverra les mails 

Test de mettre:

Code PHP :
'email_from' => 'example\@quelquechose.com'// Adresse email qui enverra les mails 
Merci de ton aide mais j'ai toujours exactement la même erreur rien n'a changé.
Tente de remplacer
$from = "From: $cfg_mail['email_from']";
par

$from = 'From: '.$cfg_mail['email_from'];

Retourner en haut Accueil