如何在浏览器上使用PHP按"刷新"按钮删除$ _POST变量?

Nav*_*eet 35 php

当我按下浏览器上的"刷新"按钮时,似乎$_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;)