当我按下浏览器上的"刷新"按钮时,似乎$_POST整个刷新过程中保留了变量.
如果我想删除$_POST我应该怎么做的内容?使用unset的领域$_POST并没有帮助.
救命?谢谢!
bur*_*ark 31
请求标头包含一些POST数据.无论你做什么,当你重新加载页面时,rquest将再次发送.
简单的解决方案是重定向到新的(如果不是相同的)页面.此模式在Web应用程序中非常常见,称为Post/Redirect/Get.所有表单通常都会进行POST,如果成功,则应该进行重定向.
尽可能地尝试将您的视图脚本(主要是html)与控制器脚本(业务逻辑和内容)分开(在不同的文件中).通过这种方式,您总是将数据发布到单独的控制器脚本,然后重定向回到视图脚本,该脚本在呈现时将不包含请求标头中的POST数据.
Pet*_*ter 11
为了防止用户刷新页面或按下后退按钮并重新提交表单,我使用以下简洁的小技巧.
<?php
if (!isset($_SESSION)) {
session_start();
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$_SESSION['postdata'] = $_POST;
unset($_POST);
header("Location: ".$_SERVER['PHP_SELF']);
exit;
}
?>
Run Code Online (Sandbox Code Playgroud)
POST数据现在处于会话中,用户可以刷新他们想要的内容.它将不再对您的代码产生影响.
小智 5
简单的PHP解决方案:
if (isset($_POST['aaa'])){
echo '
<script type="text/javascript">
location.reload();
</script>';
}
Run Code Online (Sandbox Code Playgroud)
当页面重新加载时,它将在屏幕上更新新数据并清除$ _POST;)