PHP - 缓存控制在我的方案中不起作用

时间:2013-09-10 18:13:33

标签: php

我需要一些帮助,我有一个名为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标题文章,但我仍然无法弄清楚为什么它仍在发生。请帮帮我〜先谢谢。

1 个答案:

答案 0 :(得分:0)

尝试将所有缓存控制标头放入header()的同一个调用中。浏览器可能不会期望多个Cache-control标头。

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