PHP hash()函数为不同的输入返回相同的值

时间:2014-01-21 21:52:14

标签: php html forms hash registration

我正在采取措施为我的网站设置用户注册。我有这样的表格

<form action="registrate-user.php" method="POST"> <br/>
    Username: <input type="text" id="username" name="username" value=""> <br/>
    E-mail: <input type="text" id="email" name="email" value="Secret"> <br/>
    Password: <input type="password" id="password" value=""><br/>
    <input id="registratebutton" type="submit" value="Register">
</form>

和这样的接收器

<?php

    $username = $_POST['username'];
    $email = $_POST['email'];
    $password = $_POST['password'];

    $hashedpass = hash('md5', $password);

    echo $username . " " . $email . " " . $hashedpass;

?>

但是当我输入不同的密码时,会回显相同的值!这是为什么?

1 个答案:

答案 0 :(得分:4)

$ _POST数组填充了具有名称属性的表单中的所有字段,而不是 id ,并且您的密码输入没有。您可以通过回显未加密的密码来确认这一点。

要解决您的问题,只需像在其他字段中一样添加 name =“password”

<form action="registrate-user.php" method="POST"> <br/>
    Username: <input type="text" id="username" name="username" value=""> <br/>
    E-mail: <input type="text" id="email" name="email" value="Secret"> <br/>
    Password: <input type="password" id="password" name="password" value=""><br/>
    <input id="registratebutton" type="submit" value="Register">
</form>

另请参阅PHP中的新password_hash函数,它比MD5更好。