我在页面“thePage.php”中注意到了以下内容。我的页面thePage.php上有一个表单,用户可以在其中输入他们的姓名和电子邮件,然后单击提交按钮。
1)如果由于用户点击其他页面中的链接而到达thePage.php,则会从服务器调用Page.php。 这是带有链接的html,当点击它时,从服务器检索Page.php并在浏览器中显示它:
<div>
<a id="logged-in-status" hef="http://mySite/thePage.php"> Click to go to the data entry page</a>
</div>
页面出现在浏览器中后,从服务器检索到,我可以单击浏览器的“重新加载”按钮,然后从服务器重新加载页面,而不是其他内容。
上面的div出现在我的index.php登录页面上。当用户单击上述链接时,将从服务器请求Page.php并显示在浏览器中。 thePage.php上有一个“输入名称和电子邮件”表单。加载Page.php后 - 在其上显示空白,尚未填写或提交的表单 - 如果我单击浏览器中的“重新加载”按钮,页面只会重新加载。没有消息框警告'即将重新发送信息' - 只是重新加载页面。
2)但是 - 如果用户输入或不输入任何表单数据(无关紧要),则按下“提交”按钮 - 在首次提交表单后,重新加载行为在上面的(1)中迷路了。即使表单留空并且用户按下“提交”,浏览器似乎在内部设置了“脏位” - 这样当点击浏览器重新加载按钮时,浏览器似乎说“哦看 - 显然这个页面上的一个表单 - 它已经提交了至少一次 - 我将忽略该表单提交的结果,从现在开始 - 因为表单已经提交一次 - 我不再只需重新加载页面。我将显示一个关于“重新发送以前提交的信息”的消息框“
这就是我想要做的。我希望清除浏览器内部设置的“脏位”,即使页面上的表单已提交 - 我希望浏览器返回上面的(1)中的行为,就像我刚刚点击一样另一个页面上的链接引导我访问该页面,以便浏览器“忘记”页面上的表单已提交。
必须有办法做到这一点。如果你考虑一下 - 如果从其他地方点击了一个指向thePage.php的链接,那么'脏位'将被清除,并且页面重新加载行为如上面的(1)所示,而没有“重新发送信息”消息框( 2)上面。
是否有一种程序化的方式告诉浏览器“看起来 - 假装我刚从页面链接到the.tp到达这里,好吗?请忘记此页面上所有先前的表单提交。非常感谢。”
答案 0 :(得分:1)
一旦您在php脚本中解析了表单数据,就可以使用header()
将它们发送回页面。这将阻止重新发送数据通知。
<?php
////Parse form
header("Location: http://Wherever");
exit();
?>
如果您需要知道表单已成功提交/未成功,请使用$_GET
发送并选择该表单。
?php
////Parse form
header("Location: http://Wherever?notice=successful");
exit();
?>