Problème avec strlen et php !
Résolu
Bonjour,
j'essaie d'utiliser strlen pour mesurer la longueur d'un mot de passe en php mais strlen n'est pas reconnu. J'ai cru comprend en faisant de petites recherches qu'il fallait mettre #include <string.h> dans notre script mais cela ne change rien, il ne le reconnait toujours pas... Voici la partie de code qui nous intéresse :
if (strlen($passwd)<=7){
die('Passwords needs to have 8 caractors or more !');
}
J'utilise easyphp pour développer !
Merci de votre aide : )
<config>Windows 7 / Firefox 8.0.1</config>
j'essaie d'utiliser strlen pour mesurer la longueur d'un mot de passe en php mais strlen n'est pas reconnu. J'ai cru comprend en faisant de petites recherches qu'il fallait mettre #include <string.h> dans notre script mais cela ne change rien, il ne le reconnait toujours pas... Voici la partie de code qui nous intéresse :
if (strlen($passwd)<=7){
die('Passwords needs to have 8 caractors or more !');
}
J'utilise easyphp pour développer !
Merci de votre aide : )
<config>Windows 7 / Firefox 8.0.1</config>
5 réponses
-
Modérateurstrlen est une fonction standard en PHP. Attention cependant avec les chaînes UTF8 avec lesquelles il vaut mieux utiliser les fonctions multibytes mb_*:
johand@osiris: ~/tmp $ cat strlen.php <?php $words = array("Hello world", "éméché"); foreach ($words as $aword) { printf("Longueur de %s = %d\n", $aword, strlen($aword)); } foreach ($words as $aword) { printf("Longueur de %s = %d\n", $aword, mb_strlen($aword, "UTF8")); } ?> johand@osiris: ~/tmp $ php strlen.php Longueur de Hello world = 11 Longueur de éméché = 9 Longueur de Hello world = 11 Longueur de éméché = 6
Regarde ici: https://www.php.net/manual/en/function.mb-strlen.php -
Bonjour
#include <string.h> est utilisé en langage C et n'a absolument aucun rapport avec le PHP. Si c'est encore dans ton script, retire-le.
Pourquoi dis-tu que strlen n'est pas reconnu ? strlen est toujours reconnu. As-tu un message d'erreur ? Si oui, recopie-le ici. Sinon, dis-nous quel est le comportement que tu attendais, et celui que tu observes.
Tu peux aussi faire echo $passwd; pour voir si $passwd est bien ce que tu crois. -
inséré ceci au debut de code
<?php header("Content-type: text/html; charset=UTF-8"); ini_set('mbstring.internal_encoding', 'UTF-8'); ?>
et si tu as un message d'erreur recopie-le ici :!!! -
Merci pour ta réponse,
Même en utilisant la fonction multibytes mb_strlen php ne le reconnait toujours pas...
D'autres idées ? -
Je viens de comprendre mon erreur ...
Je retournais la valeur du <input type="password"> dans la variable $passwd de cette manière : $passwd=md5($_POST['pass']); ce qui fait que lorsque j'invoquais : strlen($passwd) ... ça ne fonctionnait pas vu que c'est crypté en md5...
Il fallait plutôt aller chercher directement la valeur comme ceci :
strlen($_POST['pass']);
Merci le père ta question m'a mené dans la bonne direction !
Merci à tous : ) !