当用户尝试登录我的网站时,他的用户名和密码将作为POST变量发送。当页面加载时,我得到变量,处理它们并决定登录是否成功。然后我渲染我的页面,其中包含一条消息,通知用户他们是否成功登录。
我的问题是,如果用户点击F5或刷新,浏览器会提示他们重新发送登录数据。有没有办法在不重新加载页面的情况下避免它?有些javascript可能吗?如果没有,那么我可以发送一个标题重新加载页面,但我如何向用户显示该消息?
现在我有一个user_message对象,其中包含一个信息数组,用于在页面加载时显示用户。
答案 0 :(得分:5)
您应该重定向到新页面。这样,当用户刷新页面时,就没有POST变量。
form -> form handler -> success / failure page
第二个箭头是重定向。
答案 1 :(得分:3)
对此的解决方案是PRG pattern。您处理POSTed页面的登录信息,然后使用GET重定向到另一个(结果)页面。
答案 2 :(得分:2)
您可能想要使用 PRG Pattern
它可以防止用户通过将他重定向到新页面来重新发送。这意味着额外的往返,但这几乎没有问题。
答案 3 :(得分:1)
您可以检查POST变量,确定登录是否成功并执行header('Location: success.php');
或其他内容。
答案 4 :(得分:1)
使用“Location:whatever”标题重定向到另一个URL(或者甚至是相同的,但下次它将成为POST的GET请求内容)。在此之前,使用$ _SESSION变量在会话中存储一些信息。或者您可以将消息保存在URL中,只需将用户重定向到loginresult.php?badlogin = 1。在目标页面中,显示您需要的任何消息。