2012-04-08 19 views
1

Ich arbeite an einem Formular, das ein Kennwort zwischen 6 und 25 Zeichen benötigt. Der Benutzername und der vollständige Name müssen weniger als 25 Zeichen lang sein. Der Benutzername und der vollständige Teil funktionieren gut, aber wenn ich ein Passwort einfüge, das 10 Zeichen lang ist, wird mein Fehlercode so angezeigt, als wäre er kleiner als 6. Was mache ich falsch damit?Minimale und maximale Stärke Länge

Bitte schauen Sie sich den Code an und helfen Sie mir bitte: Das Problem ist innerhalb des Bereichs kommentiert als // Passwortlänge überprüfen. Dank everone

Der PHP-Code ist:

<?php 
    echo "<h1>Register</h1>"; 

    $submit = filter_input(INPUT_POST, 'submit'); 
    //form data 
    $fullname = strip_tags (filter_input(INPUT_POST, 'fullname')); 
    $username = strip_tags (filter_input(INPUT_POST, 'username')); 
    $password = strip_tags(filter_input(INPUT_POST, 'password')); 
    $repeatpassword = strip_tags(filter_input(INPUT_POST, 'repeatpassword')); 
    $date = date("Y-m-d"); 

    if ($submit) 
    { 
    //check for existence 
     if($fullname&&$username&&$password&&$repeatpassword) 
     { 
     $password = md5($password); 
     $repeatpassword = md5($repeatpassword); 

    if ($password==$repeatpassword) 
    { 
    //check char length of username and fullname 
     if (strlen($username)>25||strlen($fullname)>25) 
     { 
     echo "Length of username or full name is too long!"; 
     } 
     else 
     { 
     //check password length 
      if (strlen ($password)>25 || strlen ($password)<6) 
      { 
      echo "Password must be between 6 and 25 characters"; 
      } 
      else 
      { 
      //register user 
      } 


     } 





    } 
    else echo "Your passwords do not match"; 


} 
else echo "Please fill in <b>all</b> fields!"; 


    } 


    ?>` 

und die html ist:

<html> 

    <form action='register.php' method='POST'> 
<table> 
    <tr> 
     <td> 
     Your full name: 
     </td> 
     <td> 
     <input type='text' name='fullname'> 
     </td> 

    </tr> 

    <tr> 
     <td> 
     choose a username: 
     </td> 
     <td> 
     <input type='text' name='username'> 
     </td> 

    </tr> 


    <tr> 
     <td> 
     Choose a password: 
     </td> 
     <td> 
     <input type='password' name='password'> 
     </td> 

    </tr> 

    <tr> 
     <td> 
     Repeat your password: 
     </td> 
     <td> 
     <input type='password' name='repeatpassword'> 
     </td> 

    </tr> 

<table> 
<p> 
<input type='submit' name='submit' value='Register'> 

+0

Diese Frage Wegthema zu sein scheint, weil es veraltet ist. –

Antwort

2

Sie das Passwort mit MD5-Summe überschreiben hier:

$password = md5($password); 

ich für diese unterschiedlichen Werte unterschiedliche Variablennamen vorschlagen würde:

$password_md5 = md5($password); 

Benennen von Variablen appropraitely Verwirrung entfernen wird und reduzieren das Risiko von Fehlern.

+0

Dann würde ich die Variable $ password_md5 an meine Datenbank korrekt senden? –

+0

Korrigieren; Sie könnten auch den Teil des Codes, in dem Sie Ihr Passwort "md5" haben, dorthin verschieben, wo Sie '// register user'; Es ist sinnlos, 'md5' erneut in' $ repeatpassword' zu verwenden, da Sie bereits überprüft haben, dass es mit dem $ password übereinstimmt. – stealthyninja

+0

Ich habe $ password = md5 ($ password); gerade über // Benutzer registrieren. Aber sollte ich da $ password = md5 ($ password) oder $ password_md5 = md5 ($ password) verwenden? Was ist freundlicher und weniger wahrscheinlich, zukünftige Probleme zu verursachen? –

1

Sie führen MD5 auf Ihrem Passwort und Passwort wiederholen, bevor Sie es vergleichen. Führen Sie vor dem Ausführen von MD5 die Vergleichs- und Längenüberprüfung durch.

Verwandte Themen