Php 阻止浏览器重新发送post变量

Php 阻止浏览器重新发送post变量,php,javascript,Php,Javascript,当用户尝试登录到我的站点时,其用户名和密码将作为POST变量发送。当页面加载时,我获取变量,处理它们并决定登录是否成功。然后,我呈现包含一条消息的页面,通知用户登录成功或失败 我的问题是,如果用户点击F5或刷新,浏览器会提示他们重新发送登录数据。有没有办法避免它而不重新加载页面?也许是javascript?如果没有,那么我可以发送一个标题来重新加载页面,但是我如何向用户显示消息呢 现在我有一个user\u message对象,其中包含一个信息数组,用于在页面加载时显示用户。您应该重定向到新页面。

当用户尝试登录到我的站点时,其用户名和密码将作为POST变量发送。当页面加载时,我获取变量,处理它们并决定登录是否成功。然后,我呈现包含一条消息的页面,通知用户登录成功或失败

我的问题是,如果用户点击F5或刷新,浏览器会提示他们重新发送登录数据。有没有办法避免它而不重新加载页面?也许是javascript?如果没有,那么我可以发送一个标题来重新加载页面,但是我如何向用户显示消息呢


现在我有一个user\u message对象,其中包含一个信息数组,用于在页面加载时显示用户。

您应该重定向到新页面。这样,当用户刷新页面时,将没有POST变量

form -> form handler -> success / failure page

其中第二个箭头是重定向。

您可以检查POST变量,确定登录是否成功,并执行
标题('Location:success.php')之类的。

解决这个问题的方法是。您从发布的页面处理登录信息,然后使用GET重定向到另一个(结果)页面。

使用“Location:whatever”标题重定向到另一个URL(或者甚至相同的URL,但下次它将是一个GET请求intead of POST)。在此之前,使用$\u session变量在会话中存储一些信息。或者您可以将消息保存在URL中,只需将用户重定向到loginresult.php?badlogin=1。在目标页面中,显示您需要的任何消息。

您可能需要使用


它通过将用户重定向到新页面来防止用户重新发送。这意味着额外的往返,但这基本上没有问题。

所以没有javascript方法来解决这个问题?您可以使用AJAX发布数据,而不是发出普通的表单请求。没有其他解决方案,因为浏览器“缓存”最后一个完整的(!)请求,包括发送的数据。@AnPel“javascript方式”是什么意思??表单是由PHP正确处理的,所以我不知道Javascript与它有什么关系。您能详细说明一下吗?@RepWhoringPeeHaa重新发送表单数据的提示是由浏览器发出的,php与此无关。也许提示可以被操纵,或者甚至不能以某种方式显示。@AnPel你说:“然后我呈现我的页面,其中包含一条消息,通知用户登录成功或失败。”这意味着PHP呈现的页面正确吗?若并没有,我有个问题要问你们:你们不相信JS会做任何凭证验证,是吗?