刷新PHP时清除POST数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷新PHP时清除POST数据相关的知识,希望对你有一定的参考价值。
我有一个表单,刷新时重新提交。我搜索了SO,发现没有任何与我的具体问题有关的内容。我知道最好有一个单独的php页面,但是对于这个特定的项目,它需要全部在一个PHP页面上。刷新页面时我需要重置POST,以便不再自动发送表单。
请注意,我不能将页面重定向到其他地方,因此我无法使用Post / Redirect / Get。我想要的结果是:第一次访问人员,输入正确的代码,脚本运行,然后下次访问或刷新页面等,他们必须再次完成表单。任何建议将不胜感激。
$code = '';
$hide = "<script>$('form').fadeOut(500).remove();
$('.wrapper').addClass('form-success');
$('.container').delay(1800).fadeOut(500);</script>";
if ($_SERVER["REQUEST_METHOD"] == "POST")
$code = secure($_POST["code"]);
function secure($data)
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
if (intval($code) == 1234)
echo $hide;
$code = '';
else
echo "Failed";
$code = '';
答案
你确定吗?将用户重定向到当前页面非常好,我很确定这是您最好的选择。因此,在处理完代码后,将用户重定向到当前页面,刷新将不再重新提交表单。只需确保使用HTTP响应代码303重定向; [它触发GET请求] [1]:
此方法主要用于允许输出POST激活的脚本以将用户代理重定向到选定的资源。新URI不是最初请求的资源的替代引用。 303响应绝不能被缓存,但对第二个(重定向)请求的响应可能是可缓存的。
您可以在处理提交后使用header执行此操作(但在将任何html发送给用户之前):
header('Location: '.$_SERVER["PHP_SELF"], true, 303);
另一答案
if (!empty($_POST)) setcookie ("last_post", implode($_POST),time()+360000);
if (!empty($_POST) and $_COOKIE['last_post'] == implode($_POST)) $_POST = [];
通过POST请求,我们将向cookie添加数据,随后的POST请求,我们检查它们以及它们是否彼此不同,我们将进一步传递参数。
以上是关于刷新PHP时清除POST数据的主要内容,如果未能解决你的问题,请参考以下文章