我正在构建一个登录表单,它也支持使用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';
}
}
?>
答案 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
希望它可以帮到你。