Je suis face à un problème dans le cadre de la création de l'espace membre du cours PHP. En effet la fonction password_verifiy me retourne faux et je ne comprends pas pourquoi car les mots de passe correspondent.
Ci dessous :
1 - Le code de ma page connexion_post.php
2 - Le code de hachage de inscription_post.php
$req=$bdd->prepare('SELECT id,password FROM membres WHERE pseudo=:pseudo');
$req->execute(array(
'pseudo'=>$_POST['pseudo']));
$pseudo=$req->fetch();
if (!$pseudo) {
header('location:connexion.php?error=wrong');
exit;
}
else
{
if(password_verify($_POST['password'], $pseudo['password']))
{
session_start();
$_SESSION['id']=$pseudo['id'];
$_SESSION['pseudo']=$_POST['pseudo'];
header('location:index.php?a=connect');
exit;
}
elseif(password_verify($_POST['password'], $pseudo['password'])==false)
{
header('location:connexion.php?error=wrong2');
exit;
}
}
$pass_hache = password_hash($_POST['password'], PASSWORD_DEFAULT);
$insert=$bdd->prepare('INSERT INTO membres (pseudo,password,groupe,email,date_inscription) VALUES(:pseudo,:password,0,:email,NOW()) ');
$insert->execute(array(
':pseudo'=>$_POST['pseudo'],
':password'=>$pass_hache,
':email'=>$_POST['email']));
header('location:connexion.php');
exit;
Je vous remercie d'avance pour votre aide et votre attention
La colonne password est de type "text" donc pas de limite de taille si j'ai bien compris.
Pour le var_dump ça me donne ça : string(4) "root" string(60) "$2y$10$gw3pQ8WzQxpQaVf9WIK75OHUw42HEBtBTgyGUhceWgBOfny0r.sq."
Mais je vois pas trop en quoi ça m'aide
Et le elseif c'était pour faire des tests pour voir si ça renvoyait false ou juste si ça partait sur un else car la fonction marchait pas ou quelque chose du genre.
Merci d'avoir pris le temps de me répondre, j'ai donc mis mon hash en Varchar (255) mais toujours le même problème... Je n'y comprends rien, pourtant c'est sûrement un petit truc tout bête...
Ci-joint le lien de mon site que j'ai herbergé afin de vous fournir le plus d'informations possibles : http://legioncerbere.go.yj.fr/index.php
Je vous partage la structure de ma BDD juste en dessous :
- Edité par MartinHermouey 15 octobre 2020 à 15:19:15
Je précise à tout hasard qu'augmenter la taille des colonnes ne changera pas leur contenu. S'il était d'aventure tronqué, les données sont perdues.
Bonjour Ymox, je m'en doutais j'avais bel et bien supprimé le contenu de ma bdd et m'étais inscrit à nouveau mais merci quand même pour votre réponse :)
quenti77 a écrit:
Je viens de faire un test rapide avec ton hash et en effet celui-ci ne marche pas :
Il faut tester au niveau de l'inscription déjà est-ce que tout est bon puis voir avec la connexion
Edit: En testant ton formulaire et en y enlevant les champs j'ai le droit à une erreur 500 signe d'une erreur dans le code.
Je soupçonne le manque de vérification des champs du formulaire.
- Edité par quenti77 il y a 5 minutes
Bonjour quenti77,
Je ne suis pas sûr de comprendre, pouvez-vous m'expliquer plus en détail. Cet espace membre étant mon premier projet en php, j'ai donc très peu d'expérience en vérification de formulaire.
Ce que j'ai mis en place :
- type = password
- type = email
- on vérifie si le pseudo est dans la bdd côté serveur et sinon on renvoi à la page de connexion avec un message d'erreur
- on vérifie que les deux mdp sont les mêmes côté serveur et sinon pareil on renvoi à la page de connexion
Merci d'avance pour ta réponse,
EDIT : le code du formulaire
<?php
if(isset($_GET['error']) AND $_GET['error']=='mdp')
{
echo "<p class=error>Les mots de passe saisis ne correspondent pas</p>";
}
if(isset($_GET['error']) AND $_GET['error']=='pseudo')
{
echo "<p class=error>Le pseudo saisi existe déja. Veuillez-en essayer un autre</p>";
}
?>
<form method="post" action="inscription_post.php">
<label for="pseudo">Pseudo : </label><input id="pseudo" type="text" name="pseudo" required placeholder="Votre pseudo" /><br/>
<label for="password">Mot de passe : </label><input id="password" type="password" name="motdepasse" required placeholder="Mot de passe" /><br/>
<label for="cpassword">Confirmation du mot de passe : </label><input id="cpassword" type="password" name="cmotdepasse" required placeholder="Mot de passe" /><br/>
<label for="email">Email : </label><input id="email" type="email" required name="email" placeholder="Adresse mail" /><br/>
<input type="checkbox" class="chekbox" name="cgu" id="cgu" required><label class="textcheckbox" for="cgu"> J'ai lu et j'accepte les règles de confidentialité liées à mes Informations et Cookies</label><br/>
<input id="valider" type="submit" value="Valider" />
</form>
</p>
</article>
Le code de ma page inscription_post.php :
if($_POST['password']==$_POST["cpassword"])
{
$verif=$bdd->prepare('SELECT pseudo FROM membres WHERE pseudo=:pseudo');
$verif->execute(array('pseudo'=>$_POST['pseudo']));
$pseudo=$verif->fetch();
if($pseudo)
{
header('location:inscription.php?error=pseudo');
}
else
{
$pass_hache = password_hash($_POST['password'], PASSWORD_DEFAULT);
$insert=$bdd->prepare('INSERT INTO membres (pseudo,password,groupe,email,date_inscription) VALUES(:pseudo,:password,0,:email,NOW()) ');
$insert->execute(array(
':pseudo'=>$_POST['pseudo'],
':password'=>$pass_hache,
':email'=>$_POST['email']));
header('location:connexion.php');
exit;
exit;
}
}
else
{
header('location:inscription.php?error=mdp');
exit;
}
?>
Martin
- Edité par MartinHermouey 15 octobre 2020 à 15:44:17
tu développais avec toutes les erreurs PHP affichées (notices comprises, sur ton code tu aurais dû le voir de suite par des notice: undefined index (c)password)
tu avais vérifier que tu recevais bien ce que tu penses à l'aide d'un var_dump($_POST);
tu testais d'abord l'existence (isset), a minima, de ces variables POST
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli