你好,我嘗試使用pdo從數據庫返回散列密碼,並允許用戶登錄,而他們的密碼被保護。我已經建立了一個註冊頁面,其中輸入密碼。我現在試圖去解決這個問題。我認爲我很接近,但這已經有很多日子停留在同一個地方,我希望有人能幫我完成我的代碼?試圖驗證散列密碼和驗證登錄pdo php
PHP致命錯誤:未捕獲錯誤:調用成員函數fetch()布爾值在/var/www/html/login.php:54\nStack trace:\ n#0 {main} \ n拋出/無功/ www/html等/ login.php中上線54,引用者:http://172.16.62.211/login.php
if (isset($_POST['submit'])){
$username = $_POST['username'];
$password = $_POST['password'];
$q = $handler->prepare('SELECT * FROM users WHERE username = ?');
$query = $q->execute(array(
$username));
$_SESSION['username'] = $username;
$count = $q->rowCount();
if ($count == 1 -> fetch(PDO::FETCH_ASSOC)){
$hash_pwd = $count['password'];
$hash = password_verify($password, $hash_pwd);
if ($hash_pwd == 0) {
header("location: login.php?error=empty");
}
else {
$q = $handler->prepare('SELECT * FROM users WHERE username = ? && password = $hash_pwd');
$query = $q->execute(array(
$username,
$password));
$count = $q->rowCount();
if($count == 1){
$_SESSION['username'] = $username;
header("location: index.php");
return;
} else {
echo '<p class="error-message3">'.'<br>'.'<br>'."You have ented an incorrecct login!<br>Please try again.".'</p>';
}}}}
?>
*「我現在正試圖去解決這個問題。」* - 你究竟是什麼意思?哪一條是第54行? –
您也只在查詢中有1個佔位符,但在數組中使用2作爲'$ q = $ handler-> prepare('SELECT * FROM users WHERE username =?&& password = $ hash_pwd');'。這也是失敗的另一個原因。 –
@ Fred-ii-我試圖在我的數據庫中散列一個哈希密碼來啓用登錄。 –