請注意,代碼片段只是作為示例,它的作業方式沒有任何問題 - 我的問題與 Chrome 提示用戶記住他們的登錄詳細資訊的默認行為有關,我希望在輸入密碼時發生這種情況是正確的,但密碼錯誤時不會發生。
我一直在環顧四周,遇到其他文章,但它們并不是專門針對我的問題,也不能與之相關。
處理表單提交的后端代碼基本上是這樣 的(因為代碼實際上不是這里的問題,所以減少了)
if(password_verify($password,$dbpassword)){
//Task: Please DO prompt me here chrome, this is correct
header('Location: /account');
exit();
}
setcookie('error','Your password is incorrect',time() 5,'/','',true);
//Task: Please DON'T prompt me here chrome, this is the wrong password!
header('Location: /log-in');
exit();
然后登錄頁面讀取設定的 cookie 并顯示錯誤,提示用戶再次嘗試。
該問題與我的代碼無關。代碼很好。
Chrome 使用 header('Location:') 表示登錄成功,從而提示用戶保存這些詳細資訊(煩人)。我想知道是否有人知道如何基本上告訴瀏覽器這是一次失敗的嘗試?
未經測驗,但我想同樣的提示會出現在提供相同用戶/密碼存盤的其他瀏覽器上......所以如果有人有一個全瀏覽器解決方案會很棒......我相信這是一個簡單的單行解決這個問題,但我已經研究了一個多小時沒有成功
到目前為止,我的代碼執行得很好:
- 帶有錯誤訊息的 Cookie 集 ?
- 標頭重定向回登錄頁面 ?
- 顯示 Cookie 讀取和錯誤訊息 ?
- Cookie 已洗掉 ?
- 谷歌不應該要求記住,因為它是錯誤的 ?
uj5u.com熱心網友回復:
您可以嘗試通過設定狀態碼 401(未授權)來告訴瀏覽器用戶尚未通過身份驗證:
http_response_code(401)
但是,您應該知道Location標頭只能與重定向狀態代碼 (3xx) 一起使用。因此,為防止出現意外行為,請考慮直接呈現登錄頁面,或使用不同的重定向方法。另請參閱此答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/482973.html
