J'avais un code de code inefficace pour réinitialiser les mots de passe en fonction de l'utilisateur qui entrait son nom d'utilisateur ou son adresse e-mail. Le script PHP s'est ramifié en fonction de l'identifiant utilisé. Je l'ai fusionné en un qui fonctionne maintenant si l'utilisateur entre son nom d'utilisateur, mais pas si elles entrent leur adresse e-mail. Voici le code saillant:Le script de réinitialisation du mot de passe ne s'allume que la moitié du temps
$identifier = isset($_POST["username"])?"username":"email";
$ident = isset($_POST["username"])?trim(mysqli_real_escape_string($mysqli,(check_chars_username($_POST["username"])))):trim(mysqli_real_escape_string($mysqli, (check_chars_email($_POST["email"]))));
//create and issue the query
$sql = "SELECT * FROM aromaMaster WHERE $identifier = '$ident'";
$sql_res =mysqli_query($mysqli, $sql) or die(mysqli_error($mysqli));
if(mysqli_num_rows($sql_res) == 0) {
//wrong login info
header("Location: password_reset_form.html/error=$ident");
exit();
}
$info = mysqli_fetch_array($sql_res);
$userid = $info["id"];
$username = stripslashes($info["username"]);
$email = stripslashes($info["email"]);
J'ai vérifié et vérifié que doublé le champ de formulaire e-mail est appelé e-mail et il est. Ça me fait me gratter la tête. La redirection d'en-tête est particulièrement intéressante. Lorsque je saisis une adresse e-mail et que je suis redirigé, la variable $ ident apparaît vide.
Exécutez ceci à l'aide d'un débogueur (PHP + Zend?) Ou au moins echo $ identifier et $ ident après qu'ils ont été définis pour s'assurer qu'ils sont bien ce qu'ils sont supposés être. –
À l'avenir, il vous suffit d'omettre les balises dans le titre. Cela encombre la question. – random
@ e.c.h.o .: fera, désolé. @igro: Comme je l'ai dit, j'ai ajouté $ ident à la chaîne de requête, et il est apparu vide. Cependant, en essayant $ identifier, pour une raison quelconque, il a dit "nom d'utilisateur". Je suppose que isset était le mauvais test - l'a changé en! Empty() et ça marche très bien. Merci! – user97410