我不知道爲什麼它不會工作。PHP登錄無效。使用password_verify,它似乎是導致一些問題
以上的login.php
$email = $_POST['email];
$password = $_POST['password];
$validEmail = filter_var($email, FILTER_VALIDATE_EMAIL);
$getpassword = $connect->query("SELECT password FROM users WHERE email = '$validEmail'");
$row = $getpassword->fetch_assoc();
一切工作正常。我得到電子郵件所連接的密碼,以便我可以「驗證」密碼。
$passVarify = password_varify($password, $row['password']);
當我嘗試 「回聲」,或使用 「的var_dump」/ 「的print_r」 上 「$ passVerify」,它只是顯示數字 「1」? 我驗證了密碼後,我運行了另一個查詢,以便可以獲得「用戶標識」和「特權」。我需要「解開」或再次將密碼設爲「正常」,以便我可以在下面進行查詢。
$result = $objConnection->query("SELECT userid, privileges FROM users WHERE email = '$validEmail' && password = '$passVarify'");
下面的代碼似乎沒有拿起查詢?由於某種原因,它不起作用。
if($result->num_rows > 0) {
$row = $result->fetch_assoc();
$userid = $_SESSION['userid'] = $row['userid'];
$privileges = $_SESSION['privileges'] = $row['privileges'];
}
任何好主意?因爲我一直在撓撓我的腦後,試圖找出爲什麼第一個「查詢」起作用,而第二個不起作用?!
'password_verify'返回true或false,沒有別的。如果您已經確認,則不需要使用WHERE clausel的密碼,確保一切正常。您可以不僅僅是將所需的所有列都提取到一列,並且如果證書正確並且打印錯誤和/或重定向,則設置您需要的內容。 –
您正在使用'password_hash/verify':很好。您正在將用戶提供的值注入到SQL查詢中:bad ... –