2012-04-08 153 views
1

我正在处理需要密码长度在6到25个字符之间的表单。用户名和全名不得超过25个字符。用户名和全名部分工作正常,但是当我输入一个长度为10个字符的密码时,它将我的错误代码作为小于6的回声。我该怎么做?最小和最大强度长度

请看看代码,请帮助我: 问题是在该地区评论为/ /检查密码长度。由于EVERONE

PHP代码为:

<?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!"; 


    } 


    ?>` 

和HTML是:

<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

这个问题似乎是题外话,因为它已经过时了。 – 2014-10-15 14:39:01

回答

2

你与它的MD5校验这里覆盖的密码:

$password = md5($password); 

我建议使用这些不同的价值观不同的变量名:

$password_md5 = md5($password); 

命名变量appropraitely将消除混乱并降低错误的风险。

+0

然后我会发送变量$ password_md5到我的数据库正确吗? – 2012-04-08 20:42:21

+0

正确;你也可以把你的密码的一部分移到你注册用户的地方;因为您已经检查过它与'$ password'匹配,因此再次在'$ repeatpassword'上使用'md5'没有意义。 – stealthyninja 2012-04-08 20:44:05

+0

我把$ password = md5($ password);刚才//注册用户。但是,我应该使用$ password = md5($ password)还是$ password_md5 = md5($ password)?哪个更友好,不太可能导致未来的问题? – 2012-04-08 20:54:08

1

您对您的密码运行MD5和你比较之前重复密码。在对它们运行MD5之前进行比较和长度检查。