Après avoir fait de multiple recherche et chercher par moi-même la solution, je n'ai pas trouvé !!!
Je hashe les mots de passe avec password_hash et je les vérifie avec password_verify. Manuellement cela fonction mais quand je doit récupérer le mot de passe via la base de données, le mot de passe ne correspond pas ou il ne le trouve pas...
Voici le formulaire :
<?php
include('connexion.php');
include('creation.php');
?>
<html>
<head>
<title>Accueil</title>
</head>
<body>
Creer un mot de passe :<br />
<form action="index.php" method="post">
<!-- Login : <input type="text" name="login" ><br /> -->
Mot de passe : <input type="password" name="pass"><br />
<input type="submit" name="creer" value="creer">
</form>
Connexion à l'espace membre :<br />
<form action="index.php" method="post">
<!-- Login : <input type="text" name="login" ><br /> -->
Mot de passe : <input type="password" name="pass"><br />
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="inscription.php">Vous inscrire</a>
</body>
</html>
la page creation:
<?php
if (isset($_POST['creer']))
{
if (empty($_POST['pass']))
{
echo 'Le mot de passe est vide.';
}
else
{
$passe_admin = htmlspecialchars(trim($_POST['pass']));
$hash = password_hash($passe_admin, PASSWORD_BCRYPT, ['cost' => 12]);
$connexion_base_de_donnees = new PDO('connexion a la base de données');
$connexion_base_de_donnees->exec('SET NAMES utf8');
if (!$connexion_base_de_donnees)
{
echo '<font color="red">La connexion au serveur rencontre des difficultées.</font>';
}
else
{
$connexion_accepter = $connexion_base_de_donnees->prepare("INSERT INTO admin (mdp) VALUES (:pass)");
$connexion_accepter->bindParam(':pass', $hash);
$connexion_accepter->execute();
}
}
}
$connexion_base_de_donnees = null;
et la page connexion:
<?php
if (isset($_POST['connexion']))
{
if (empty($_POST['pass']))
{
echo 'Le mot de passe est vide.';
}
else
{
$passe_admin = htmlspecialchars(trim($_POST['pass']));
$connexion_base_de_donnees = new PDO('connexion a la base de données');
$connexion_base_de_donnees->exec('SET NAMES utf8');
if (!$connexion_base_de_donnees)
{
echo '<font color="red">La connexion au serveur rencontre des difficultées.</font>';
}
else
{
$connexion_accepter = $connexion_base_de_donnees->prepare("SELECT * FROM admin WHERE mdp = :pass");
$connexion_accepter->bindParam(':pass', $passe_admin);
$connexion_accepter->execute();
$verif = $connexion_accepter->fetch();
$verif_mdp = password_verify($passe_admin, '$2y$12$w3g7KNhp3uGacrHC6CvPiOtCdpm6OJ60OrQU5iETzlRnrZ6bPFB4a');
if ($verif_mdp == true)
{
header('Location: aze/index.php');
}
else
{
echo 'Mot de passe incorrect.';
}
}
}
}
ceci correspond au mot de passe hashé dans la base de données : $2y$12$w3g7KNhp3uGacrHC6CvPiOtCdpm6OJ60OrQU5iETzlRnrZ6bPFB4a et si je veux le récupérer avec cette valeur : $verif_mdp = password_verify($passe_admin, $verif['mdp']); ca ne fonctionne plu....!!!Je comprend pas de où peut venir l'erreur.
Quelqu'un aurait-il une solution ?