0

我需要一些帮助,我有一个名为 shoppingcart.php 的 php 文件,所选产品的数据将发布到此页面以进行 sql 插入,如果我按 f5 重新加载此页面或在下一页按“Backspace”,同样数据将再次重新插入,所以我不希望这种情况发生并且一直在进行一些搜索,但仍然没有解决我的问题。

我的代码:

<?php
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>

<?php
if(isset($_POST["form"])){
//insert data to db
}

ob_start();
?>

<form id="form" name="form" method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"
enctype="multipart/form-data" onsubmit="return validate();">
....
....
....
</form>

<?php
$pagecontent = ob_get_contents();
ob_end_clean();
$pagetitle = "Shopping Cart";
include("include/template.php");
?>

我已经研究了输出缓冲区和 http 标头文章,但我仍然无法弄清楚为什么它仍然会发生。请帮助我~提前谢谢。

4

1 回答 1

0

尝试将所有缓存控制标头放入对header(). 浏览器可能不期望多个缓存控制标头。

此外,您是否在浏览器中收到重新加载将重新提交 POST 数据的提示?如果是这样,并且您选择重新提交,您将需要自己的代码来确保强制重新发布的数据被拒绝(尽管用户提出了请求),例如。通过在重新插入之前检查的表单中包含唯一标识符。或者,您可以接受如果用户选择重新提交 POST 数据,那么他们明确要求重新处理该请求。

于 2013-09-11T19:00:58.883 回答