2010-10-14 6 views
0

J'ai un problème avec ce formulaire d'inscription, je vérifie le mot de passe et le nom d'utilisateur, ceci est le processus dans lequel je le fais?formulaire d'inscription vérification de l'ordre en php?

php:

$username = mysql_real_escape_string($_POST['username']); 
$password = md5(mysql_real_escape_string($_POST['pass'])); 


    //check if username is valid 
     if (ereg("^[a-zA-Z0-9_\-]+$", $username)){ 

      die(msg(0,"oOps, This username is not valid, only numbers, letters and underscores allowed")); 

     } 

     // check if password is more than 6 

    if(strlen($password) < 6){ 

     die(msg(0,"oOps, The password has to be more than 6 characters, be tricky!")); 
    } 

mais je tape l'utilisateur, mot de passe correctement, mais sa me donne encore les erreurs affichées, est Thier quelque chose de mal avec le contrôle :)) grâce

+0

La longueur du hachage est la même quelle que soit la longueur du mot de passe. En outre, vous devriez utiliser un [salt] (http://en.wikipedia.org/wiki/Cryptographic_salt). – Gelatin

+1

Vous NE DEVREZ PAS utiliser 'ereg' ces fonctions sont obsolètes. Utilisez 'preg' à la place. – prodigitalson

Répondre

2

Il ne Il est logique de vérifier la validité du $ username après l'avoir passé dans mysql_real_escape_string() car cette fonction va échapper à certains caractères, et le 'nom d'utilisateur' qui en résulte contiendra des caractères '\', et échouera donc toujours votre expression régulière.

(De plus, vous semblez être vérifier un nom d'utilisateur et mourir() uant si elle est valide. Êtes-vous sûr que le code est exactement comment vous l'écrire?)

De même, il doesn Cela n'a aucun sens de vérifier la longueur du mot de passe $ après l'avoir passé dans md5(). md5() convertira n'importe quoi en une chaîne de 32 caractères, de sorte que cette condition échouera toujours.

P.S.

// vérifier si le mot de passe est plus de 6

if (strlen (mot de passe $) < 6) {

Si vous allez au code trop commentaire, au moins faire Assurez-vous que le commentaire est exact! ;-)

+0

Donc, fondamentalement, je devrais vérifier avant de les prendre à travers mysql escape et md5 !! – getaway

+0

yup - exactement à droite –

+0

pour la vérification du nom d'utilisateur je veux juste permettre _ 0-9 a-z seulement, comment je le changer – getaway

Questions connexes