在登入腳本中,密碼通常由使用者輸入並儲存在明文變數中。要根據資料庫中儲存的加密密碼來驗證輸入的密碼,我們需要使用password_verify()。
if(password_verify($enteredPassword, $hashedPassword)) { // Password verification successful } else { // Password verification failed }
在您的特定情況下,您可以在以下程式碼片段中整合password_verify():
if(($row = $query->fetch()) && (password_verify($ctPassword,$row['password']))){ // Password verification successful $_SESSION['email'] = $row['email']; $_SESSION['first_name'] = $row['first_name'];
記得將輸入的密碼($ctPassword)綁定到準備好的語句中的參數以確保安全執行。
要使用PDO::FETCH_ASSOC 更有效地擷取使用者數據,您可以將程式碼更新為如下:
$results = $query->fetch(PDO::FETCH_ASSOC); if($results && password_verify($ctPassword, $results['password'])) { foreach($results as $key => $value) { $_SESSION[$key] = $value; } }
這會自動將所有檢索到的值指派為會話變量,從而可以輕鬆存取「我的帳戶」頁面。
以上是密碼驗證應該放在登入腳本中的什麼位置?的詳細內容。更多資訊請關注PHP中文網其他相關文章!