我正在用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脚本只是检查数据库的登录信息以确保其有效,如果凭据不正确,则打印“登录尝试失败”。
有人可以对这个问题有所了解吗?我知道这是一个小问题,但我没有注意到我的浏览器提供保存其他网站登录失败的密码。
提前致谢!
答案 0 :(得分:6)
我很确定问题是“checklogin.php”与此表单出现的页面不同。您应该将表单发布到自身,并在登录表单失败时重绘它。
如果您不重绘表单,或者您发布到另一个页面,则浏览器很可能会认为登录成功。我猜大多数浏览器都会因同一个表单仍存在而确定失败。只有在成功时它才会消失。
答案 1 :(得分:3)
这可能不是最简单的方法,但我所做的是使用AJAX提交表单并将我想要发送给用户的页面放在表单的action属性中。然后,提交按钮将是按钮类型而不是类型提交,并且会在单击时调用执行AJAX请求的Javascript函数。如果对checklogin.php文件的异步请求返回登录成功,我使用JavaScript提交真正将用户发送到下一页的表单,但浏览器会要求保存密码。此方法的另一个好处是,在提交错误密码时,页面不必重新加载。