我的登錄表單無法識別現有用戶。我存儲在數據庫中的密碼使用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:但只有當地穴不匹配。 –