刷新PHP时清除POST数据

时间:2016-03-20 10:35:15

标签: php forms post

我有一个在刷新时重新提交的表单。我搜索了SO,发现与我的具体问题无关。我知道最好有一个单独的PHP页面,但是对于这个特定的项目,它需要全部在一个PHP页面上。刷新页面时我需要重置POST,以便不再自动发送表单。

请注意,我不能将页面重定向到其他地方,因此我无法使用Post / Redirect / Get。我想要的结果是:第一次访问人员,输入正确的代码,脚本运行,然后下次访问或刷新页面等,他们必须再次完成表单。任何建议都会非常感激。

let myView = NSBundle.mainBundle().loadNibNamed("viewidentifier", owner: self, options: nil)[0] as? YourView


myView.frame = self.view.bounds

self.view.addSubview(myView)

2 个答案:

答案 0 :(得分:1)

你确定吗?将用户重定向到当前页面非常好,我非常确定这是您的最佳选择。因此,在处理完代码后,将用户重定向到当前页面,刷新将不再重新提交表单。只需确保使用HTTP响应代码303重定向; [它触发GET请求] [1]:

  

此方法主要用于允许输出POST激活的脚本以将用户代理重定向到选定的资源。新URI不是最初请求的资源的替代引用。 303响应绝不能被缓存,但对第二个(重定向)请求的响应可能是可缓存的。

您可以在处理完提交后(但在将任何html发送给用户之前)使用header来执行此操作:

header('Location: '.$_SERVER["PHP_SELF"], true, 303);

答案 1 :(得分:0)

if (!empty($_POST)) setcookie ("last_post", implode($_POST),time()+360000);
if (!empty($_POST) and $_COOKIE['last_post'] == implode($_POST)) $_POST = [];

对于POST请求,我们将向cookie中添加数据,随后的POST请求中,我们将对它们进行检查,如果它们彼此不同,则将进一步传递参数。