如何在失败的登录尝试中使浏览器无法提示保存密码?

时间:2011-07-11 01:45:59

标签: php html firefox browser

我正在用PHP编写一个应用程序,它使用表单来检索用户名和密码输入。成功登录后,Web浏览器将提示保存用户名和密码(使用Firefox,Safari和Chrome进行测试)。

但是,如果用户登录失败,浏览器仍会提示保存密码(这显然不是预期的行为)。如何指示浏览器登录失败并且不应提示保存详细信息?

以下是登录页面的HTML:

<html>
  <head><title>Login</title></head>
<body>
  <style text="css">
    fieldset {
      padding: 10px;
      width: 250px;
      text-align: right;
    }
</style>
<form method="POST" action="checkLogin.php">
  <fieldset>
  <label for="user">Username: <input type="text" id="user" name="username" size="15" /></label><br />
  <label for="pass">Password: <input type="password" id="pass" name="password" size="15" /></label><br />
  <p><input type="submit" value="Login" /></p>
</fieldset>    
</form>
</body>
</html>

checkLogin.php脚本只是检查数据库的登录信息以确保其有效,如果凭据不正确,则打印“登录尝试失败”。

有人可以对这个问题有所了解吗?我知道这是一个小问题,但我没有注意到我的浏览器提供保存其他网站登录失败的密码。

提前致谢!

2 个答案:

答案 0 :(得分:6)

我很确定问题是“checklogin.php”与此表单出现的页面不同。您应该将表单发布到自身,并在登录表单失败时重绘它。

如果您不重绘表单,或者您发布到另一个页面,则浏览器很可能会认为登录成功。我猜大多数浏览器都会因同一个表单仍存在而确定失败。只有在成功时它才会消失。

答案 1 :(得分:3)

这可能不是最简单的方法,但我所做的是使用AJAX提交表单并将我想要发送给用户的页面放在表单的action属性中。然后,提交按钮将是按钮类型而不是类型提交,并且会在单击时调用执行AJAX请求的Javascript函数。如果对checklogin.php文件的异步请求返回登录成功,我使用JavaScript提交真正将用户发送到下一页的表单,但浏览器会要求保存密码。此方法的另一个好处是,在提交错误密码时,页面不必重新加载。