J'essaie d'utiliser le hachage de mot de passe en utilisant phpmysql. Le problème est password_verify ne semble pas fonctionner pour moi jusqu'à présent. Dites, mon mot de passe lors de l'inscription est '123456789'. J'emmagasinés dans la base de données en utilisantLe hachage de mot de passe ne fonctionne pas dans php mysql
password_hash('123456789', PASSWORD_BCRYPT, array('cost' => 12));
Et puis quand je rentre « 123456789 » dans le champ de connexion, il ne fait rien, échoue.
Voici mon code:
<?php
session_start();
include('db.php');
?>
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1" />
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<p/>
<?php
if(isset($_POST['login']) && $_POST['login'] == 'Login') {
$loginEmail = $_POST['loginEmail'];
$loginPassword = $_POST['loginPassword'];
$sqlLogin = $db->prepare("SELECT * FROM registered_users WHERE email = ?");
$sqlLogin->bind_param("s",$loginEmail);
$sqlLogin->execute();
$sqlLogin = $sqlLogin->get_result();
$numrowsLogin = $sqlLogin->num_rows;
if($numrowsLogin == 1) {
$rowLogin = $sqlLogin->fetch_assoc();
$stored_password = $rowLogin['password'];
}
if(password_verify($loginPassword, $stored_password)){
header('Location: homepage.php');
}else{
echo 'invalid login';
}
}
?>
<form action = "<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
<table style="width:500px">
<tr>
<td width="30%"><input style="width: 200px; height: 25px; border-radius: 5px;" type="text" name="loginEmail" placeholder = "Email" required/><br/></td>
</tr>
<tr>
<td width="30%"><input style="width: 200px; height: 25px; border-radius: 5px;" type="password" name="loginPassword" placeholder = "Password" required/><br/></td>
</tr>
</table>
<input style="font-weight: bold; width: 70px; height: 25px; border-radius: 5px;" type="submit" name="login" value="Login"/>
</form>
</body>
</html>
fait un débogage de base, comme vérifier si votre requête réussit et renvoie un hachage stocké? et notez que vous êtes vulnérable aux attaques XSS en utilisant '$ _SERVER ['PHP_SELF']' dans 'action' de votre formulaire. –
Vous devez ajouter 'exit;' après tout 'header ('emplacement: ...');' -call puisque nous voulons arrêter de sortir des trucs dans le navigateur à ce stade. –
oui, désolé pour cela, mis à jour –