[RESOLU] strlen ne marche pas :'(

Eléphanteau du PHP | 44 Messages

27 févr. 2020, 17:58

Code : Tout sélectionner

if(isset($_POST['forminscription'])) { $pseudo = htmlspecialchars($_POST['pseudo']); $mail = htmlspecialchars($_POST['mail']); $mail2 = htmlspecialchars($_POST['mail2']); $mdp = md5($_POST['mdp']); $mdp2 = md5($_POST['mdp2']); if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) { $pseudolength = strlen($pseudo); if($pseudolength <= 30) { if ($pseudolength >=10) { if($mail == $mail2) { if(filter_var($mail, FILTER_VALIDATE_EMAIL)) { $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?"); $reqmail->execute(array($mail)); $mailexist = $reqmail->rowCount(); if($mailexist == 0) { if($mdp == $mdp2) { if(!empty($_POST['CGU'])) { $mdplength = strlen($mdp); if($mdplength < 5) { $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse, avatar) VALUES(?, ?, ?, ?)"); $insertmbr->execute(array($pseudo, $mail, $mdp, "default.png")); $ok = "Votre compte a bien été créé ! <br><a href=\"connexion.php\">Me connecter</a>"; } else { $erreur = "Mot de passe trop court"; } } else { $erreur = "Veuillez lire et accepter les CGU."; } } else { $erreur = "Vos mots de passes ne correspondent pas !"; } } else { $erreur = "Adresse mail déjà utilisée !"; } } else { $erreur = "Votre adresse mail n'est pas valide !"; } } else { $erreur = "Vos adresses mail ne correspondent pas !"; } } else { $erreur = "Votre pseudo dois être composé d'au minimum 10 caractères !"; } } else { $erreur = "Votre pseudo ne doit pas dépasser 30 caractères !"; } } else { $erreur = "Tous les champs doivent être complétés !"; } } ?>
Bonjour à tous,
je suis face à un problème de taille, que même des professionnels de mon centre de formation n'ont pas réussis à résoudre.
J'ai ajouter une fonction strlen au mot de passe de mes utilisateurs en fin de code php, juste avant l'écriture de la bdd.
Si le mot de passe est inférieur à 5 caractères, l'utilisateur est censé recevoir un message d'erreur.
La fonction marche très bien le problème c'est que même si le mot de passe est supérieur à 5 caractères, le message d'erreur s'affiche toujours et rien n'est écrit dans ma BDD...
Mes formateurs ne voient pas non plus d'erreurs dans les quelques lignes que j'ai rajouté pour la fonction...
Je suis perdu :(
EDIT: j'ai fais plein de test de mon coté, et même en gardant un simple champ mdp dans mon formulaire d'inscription ( donc en enlevant le mot de passe confirm ) ça ne marche pas non plus... :/

Mammouth du PHP | 2703 Messages

27 févr. 2020, 18:17

https://www.php.net/manual/fr/function.md5.php
"Valeurs de retour
Retourne le md5 de la chaîne, sous la forme d'un nombre hexadécimal de 32 caractères."

cela ne retourne donc pas une chaine comme attendue, d'où le résultat inexpliqué de strlen.

Eléphanteau du PHP | 44 Messages

27 févr. 2020, 18:22

Du coup comment je peux faire pour calculer le nombre de caractère dans la chaine du mot de passe et transformer le post 'mdp' en md5 ensuite ?
parce qu'on m'a seulement appris à déclarer mes variables mots de passes en md5 directement... Donc du coup impossible de faire du strlen sur du md5 comme tu viens de m'expliquer...

Mammouth du PHP | 2703 Messages

27 févr. 2020, 18:25

c'est le mot de passe qui doit avoir une longueur > 5, pas son md5.

Eléphanteau du PHP | 44 Messages

27 févr. 2020, 18:32

Ok donc j'ai bien enlever le md5 de mes variables mot de passes. Et ça marche.
Le problème c'est que je veux qu' à la fin de mon code, avant l'insertion dans ma base de données, que mes mots de passes finissent bien hachés en md5... Comment faire ? :)

Mammouth du PHP | 2703 Messages

27 févr. 2020, 18:37

passer les bonnes varibales à :
$insertmbr->execute(array($pseudo, $mail, $mdp, "default.png"));

Eléphanteau du PHP | 44 Messages

27 févr. 2020, 18:41

Ok got it !
Ca marche niquel, merci beaucoup à toi pour les indices ! :p ( J'aime quand les gens me donnent des indices, ça me force à chercher et du coup j'ai pas juste les réponses qui me tombent du ciel lol ).
Je passe en résolu du coup ! :)