【问题标题】:Minimum and maximum strength length最小和最大强度长度
【发布时间】:2012-04-08 20:30:30
【问题描述】:

我正在处理一个需要 6 到 25 个字符之间的密码的表单。用户名和全名必须少于 25 个字符。用户名和全名部分工作正常,但是当我输入一个 10 个字符长的密码时,它会回显我的错误代码,就好像它小于 6。我做错了什么?

请看一下代码并帮助我: 问题在注释为//检查密码长度的区域内。谢谢大家

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'>

【问题讨论】:

  • 这个问题似乎离题了,因为它已经过时了。

标签: php string max strlen string-length


【解决方案1】:

你在这里用它的 MD5 和覆盖密码:

$password = md5($password);

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

$password_md5 = md5($password);

适当地命名变量将消除混乱并降低出错的风险。

【讨论】:

  • 那我将变量 $password_md5 发送到我的数据库对吗?
  • 正确;您也可以将md5密码所在的代码部分移动到//register user的位置;再次在$repeatpassword 上使用md5 毫无意义,因为您已经检查过它是否与$password 匹配。
  • 我把 $password = md5($password);就在上面 //注册用户。但是我应该在那里使用 $password = md5($password) 还是 $password_md5 = md5($password) ?哪个更友好且不太可能导致未来的问题?
  • 如果您将$password = md5($password); 放在那里,那么它应该可以正常工作,因为大概您随后将其插入数据库。忘记 $password_md5,这只是 Mark Byers 提出的建议,以供将来参考,以便在您仍想对原始变量运行检查时存储变量的修改版本。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    您为什么不退出 MD5 而使用 Whirlpool

    $password_wp  = hash('whirlpool', $password);
    

    仍有疑问? 如果是,您在 Stackoverflow 上的答案已经得到解答:

    Which one is more secured md5 or whirlpool (hashes) and Why?

    { 更多信息 }

    http://md5-sha-whirlpool.reviews.r-tt.com

    【讨论】:

      猜你喜欢
      • 2016-02-29
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多