我的登录表单无法识别现有用户。我存储在数据库中的密码使用PHP的crypt()函数加密。当用户注册他们的密码时也会被加密并插入到数据库中。PHP/MySQL/PDO - 无法识别现有用户的登录表格
正如你在下面的代码中看到的,它检查下面输入的密码是否匹配,但是每当我输入存储在数据库中的密码时,用相应的用户名称表示用户不存在。
我是新来的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";
}
}
你的if语句都包含'error_login',如果它们是假的 - 你知道哪一个被调用吗? – andrewsi
使用'session_start();'顶部也 – pl71
@andrew:但只有当地穴不匹配。 –