PHP登录脚本无法使用salt ..如何解决它

时间:2013-11-29 14:38:16

标签: php mysql forms

我正在构建一个登录表单,它也支持使用salt进行散列。

我已经完成了登录表单,但是在我的登录表单中,当用户没有提供密码时,他被重定向到欢迎页面&当用户提交密码时,即使提交的密码正确,也会出现错误密码错误。

以下是我的登录表单:

<?php
if (isset($_POST['login'])) {
    $email        = $_POST['email'];
    $userPassword = $_POST['password'];
    $query        = "SELECT * FROM members WHERE (email='$email')";
    $result = mysql_query($query) or die('mysql error');
    if (mysql_num_rows($result) == 1) {
        $get_user_details = mysql_fetch_array($result);
        $user_id          = strip_tags($get_user_details['user_id']);
        $db_password      = strip_tags($get_user_details['password']);
        $salt             = strip_tags($get_user_details['salt']);
        $sr_user_sub_pass = hash('sha512', $userPassword . $salt);
        if ($user_sub_pass == $db_password) {
            header("location: welcome.php");
        } else {
            echo 'incorrect password';
        }
    } else {
        echo 'user not found';
    }
}
?>

3 个答案:

答案 0 :(得分:2)

我没有看到你在任何地方声明$user_sub_pass变量。这可能是问题所在。

答案 1 :(得分:0)

更改

if ($user_sub_pass == $db_password)

if ($sr_user_sub_pass === $db_password)


正如其他人指出你的代码容易受到SQL注入攻击。 使用参数化查询,您不必使用strip_tags(),请检查此question

此外,{@ 1}}已弃用,因此您应该使用mysql或PDO。

答案 2 :(得分:0)

我猜变量

$user_sub_pass

应该是

$sr_user_sub_pass

希望它可以帮到你。