par
Cilum90 » 27 févr. 2021, 13:01
Salut, si je me souviens bien lorsque tu haches le mot de passe avec la fonction password_hash (qui est je pense une très bonne fonction de hachage qui utilise un algorithme de hachage fort et irréversible d'après la doc), tu dois utiliser la fonction password_verify pour vérifier le mot de passe lors du login en lui passant le mot de passe saisi par l'utilisateur avec le hash que tu as sauvegardé dans ta base de données. Tu ne peux justement pas comparer 2 hash générés avec cette fonction car elle va à chaque fois générer des hash différents pour une même chaine en entrée.
Salut, au final j'avais changé le code avec celui que je vais poster et maintenant ça fonctionne.
Juste après avoir contrôlé si les deux Mdp sont les mêmes, je l'ai haché au moment de l'enregistrer dans la base de données.
Code : Tout sélectionner
if(isset($_POST['form_inscription']))
{
$pseudo = htmlspecialchars($_POST['pseudo']);
$email = htmlspecialchars($_POST['email']);
$email2 = htmlspecialchars($_POST['email2']);
$mdp = htmlspecialchars($_POST['mdp']);
$mdp2 = htmlspecialchars($_POST['mdp2']);
if(!empty($_POST['pseudo']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']) AND !empty($_POST['email']) AND !empty($_POST['email2']))
{
if(isset($_POST['pseudo'],$_POST['mdp'],$_POST['mdp2'],$_POST['email'],$_POST['email2']))
{
//On controle si il n'y a pas deja d'autres membres avec le même pseudo
$reqpseudo = $bdd->prepare('SELECT pseudo FROM membres where pseudo = ?');
$reqpseudo->execute(array($pseudo));
$pseudoexist=$reqpseudo->rowCount();
if ($pseudoexist == 0)
{
//On controle si il n'y a pas deja d'autres membres avec le même email
$reqmail = $bdd->prepare('SELECT * FROM membres WHERE email = ?');
$reqmail->execute(array($email));
$mailexist=$reqmail->rowCount();
if ($mailexist == 0)
{
if(($mdp == $mdp2) AND ($email == $email2) AND preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email))
{
$req = $bdd->prepare("INSERT INTO membres(pseudo, mdp, email, date_inscription) VALUES(?, ?, ?, CURDATE())");
$req->execute(array($pseudo, $hmdp= password_hash($mdp, PASSWORD_DEFAULT), $email));
?><p><?php $inscrit= 'Vous etes inscrits!';?></p><?php
}

[quote=Saian post_id=466232 time=1614357523 user_id=20262]
Salut, si je me souviens bien lorsque tu haches le mot de passe avec la fonction password_hash (qui est je pense une très bonne fonction de hachage qui utilise un algorithme de hachage fort et irréversible d'après la doc), tu dois utiliser la fonction password_verify pour vérifier le mot de passe lors du login en lui passant le mot de passe saisi par l'utilisateur avec le hash que tu as sauvegardé dans ta base de données. Tu ne peux justement pas comparer 2 hash générés avec cette fonction car elle va à chaque fois générer des hash différents pour une même chaine en entrée.
[/quote]
Salut, au final j'avais changé le code avec celui que je vais poster et maintenant ça fonctionne.
Juste après avoir contrôlé si les deux Mdp sont les mêmes, je l'ai haché au moment de l'enregistrer dans la base de données.
[code]
if(isset($_POST['form_inscription']))
{
$pseudo = htmlspecialchars($_POST['pseudo']);
$email = htmlspecialchars($_POST['email']);
$email2 = htmlspecialchars($_POST['email2']);
$mdp = htmlspecialchars($_POST['mdp']);
$mdp2 = htmlspecialchars($_POST['mdp2']);
if(!empty($_POST['pseudo']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']) AND !empty($_POST['email']) AND !empty($_POST['email2']))
{
if(isset($_POST['pseudo'],$_POST['mdp'],$_POST['mdp2'],$_POST['email'],$_POST['email2']))
{
//On controle si il n'y a pas deja d'autres membres avec le même pseudo
$reqpseudo = $bdd->prepare('SELECT pseudo FROM membres where pseudo = ?');
$reqpseudo->execute(array($pseudo));
$pseudoexist=$reqpseudo->rowCount();
if ($pseudoexist == 0)
{
//On controle si il n'y a pas deja d'autres membres avec le même email
$reqmail = $bdd->prepare('SELECT * FROM membres WHERE email = ?');
$reqmail->execute(array($email));
$mailexist=$reqmail->rowCount();
if ($mailexist == 0)
{
if(($mdp == $mdp2) AND ($email == $email2) AND preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email))
{
$req = $bdd->prepare("INSERT INTO membres(pseudo, mdp, email, date_inscription) VALUES(?, ?, ?, CURDATE())");
$req->execute(array($pseudo, $hmdp= password_hash($mdp, PASSWORD_DEFAULT), $email));
?><p><?php $inscrit= 'Vous etes inscrits!';?></p><?php
}
[/code]
:)