PHP Header 位置 - 阻止 Chrome 提示保存密码

PHP Header Location - Prevent Chrome Prompting Save Password

请注意代码片段只是作为示例,它的工作方式没有任何问题 - 我的问题与 Chrome 提示用户的默认行为有关记住他们的 sign-in 详细信息,我希望在密码正确时发生,但在密码错误时不会发生。

我一直在四处寻找,也看到了其他文章,但它们不是专门针对我的问题的,因此与我的问题无关。

处理表单提交的后端代码基本上是这样的 (删减因为代码实际上不是这里的问题)

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:') 表示登录成功,从而提示用户保存这些详细信息(烦人)。我想知道是否有人知道如何基本上告诉浏览器这是一次失败的尝试?

未经测试,但我想在提供相同 user/password 存储的其他浏览器上也会出现相同的提示...所以 all-browser 解决方案会很棒,如果有人有...我'我确定这是一个简单的衬里来解决这个问题,但我已经研究了一个多小时但没有成功

到目前为止,我的代码运行良好:

  1. 带有错误消息的 Cookie 设置 ✓
  2. Header 重定向回登录页面 ✓
  3. Cookie 读取并显示错误消息 ✓
  4. 已删除 Cookie ✓
  5. Google不应该要求记住因为错了❌

您可以尝试通过设置状态代码 401(未授权)来告诉浏览器用户尚未通过身份验证:

http_response_code(401)

但是,您应该知道 Location header 只能与重定向状态代码 (3xx) 一起使用。因此,为防止意外行为,请考虑直接呈现登录页面,或使用不同的重定向方法。另见 this answer