[RESOLU] strlen ne marche pas :'(

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] strlen ne marche pas :'(

Re: strlen ne marche pas :'(

par Stevenhonor » 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 ! :)

Re: strlen ne marche pas :'(

par or 1 » 27 févr. 2020, 18:37

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

Re: strlen ne marche pas :'(

par Stevenhonor » 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 ? :)

Re: strlen ne marche pas :'(

par or 1 » 27 févr. 2020, 18:25

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

Re: strlen ne marche pas :'(

par Stevenhonor » 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...

Re: strlen ne marche pas :'(

par or 1 » 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.

strlen ne marche pas :'(

par Stevenhonor » 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... :/