Mon système de connexion md5 hache le nom d'utilisateur et le mot de passe password_hash. Par conséquent, je ne peux pas récupérer la ligne en fonction du nom d'utilisateur? Mon client entre alors une adresse email que je base64encode. Je propose ensuite une option de changement de mot de passe perdu. Cependant, quand je mets à jour le champ en utilisant le même type de hachage mais, en utilisant le champ email comme identifiant, le nouveau mot de passe est incorrect? Ci-dessous est un exemple de ma mise à jour, mais codé en dur pour l'illustration (PS cela ne fonctionne pas non plus?).Password_hash Incorrect après la mise à jour de la table
$em = '[email protected]';
$em1 = base64_encode($em);
$ps = 'some password';
$password_hash = password_hash($ps, PASSWORD_BCRYPT);
$qu = "UPADTE table SET field = '$password_hash' WHERE email = '$em1'";
$res = mysqli_query($link, $qu);
question Edité pour inclure mon code après avoir vérifié que l'utilisateur existe et l'envoi d'un e-mail pour eux de s'identifier comme étant le propriétaire du compte. Voici la page finale du processeur.
if(EMPTY($_POST[psw1])) {
echo "New password must be supplied"; }
elseif(EMPTY($_POST[psw2])) {
echo "Repeat password must be entered"; }
elseif($_POST[psw1] != $_POST[psw2]) {
echo "Passwords entered do not match";
} elseif(EMPTY($_POST[eu])) {
echo "Essential data is missing in order to complete this process.";
}
elseif (strlen($_POST['psw1']) < 6) {
echo "Password must be at least six characters in length";
}
elseif (preg_replace("/[^a-zA-Z0-9]/", "", $_POST['psw1']) != $_POST['psw1']) {
echo "Password may only contain letters and numbers";
}
elseif(!EMPTY($_POST[psw1]) && !EMPTY($_POST[psw2]) && !EMPTY($_POST[eu]) && $_POST[pw1] == $_POST[pw2]) {
include "conn.php";
echo "$_POST[eu]<br />";
$eu = $_POST[eu];
$pdw = password_hash($_POST[pw1], PASSWORD_BCRYPT);
$sq = mysqli_query($link, "UPDATE str1 SET pf = '$pdw', cu_pw_status = '2' WHERE cu_type = '$eu'");
echo "Your password has been changed, you may now login <a href='login2.php'>Login</a>";
} else {
echo "Une erreur est survenue, contactez l'administrateur du site"; }
Salut, pas la table est appelée str1, la colonne ou le champ est appelé pF, ce fut pour l'amour de référence. Le mot de passe est mis à jour, mais est incorrect? – Szue