我的登录表单无法识别现有用户。我存储在数据库中的密码是使用 PHP 的 crypt() 函数加密的。当用户注册时,他们的密码也被加密并插入数据库。
正如您在下面的代码中看到的那样,它会检查下面输入的密码是否匹配,但是每当我输入存储在数据库中的具有相应用户名的密码时,它就会表示该用户不存在。
我是 PDO 的新手,这是我第一次使用它,通常如果我只使用 MySQL,它可以正常工作,但由于某种原因不是这样,我已经稍微更改了代码,但它仍然无法正常工作。任何人都知道为什么/在哪里/我在代码中做错了什么。
include "connect.php";
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM users WHERE username=:username";
$statement = $db->prepare($sql);
$statement->bindValue(':username',$username,PDO::PARAM_STR);
if($statement->execute())
{
if($statement->rowCount() == 1)
{
$row = $statement->fetch(PDO::FETCH_ASSOC);
if(crypt($password, $row['username']) == $row['user_password'])
{
$username = $row['username'];
$email = $row['email'];
$_SESSION['username'] = $username;
$_SESSION['email'] = $email;
$_SESSION['logged_in'] = 1;
header("Location: index.php");
exit;
}
else
{
include "error_login.php";
}
}
else
{
include "error_login.php";
}
}