Php 强制页面从服务器重新加载,而不是加载缓存版本

Php 强制页面从服务器重新加载,而不是加载缓存版本,php,javascript,jquery,Php,Javascript,Jquery,我有一个网页A。用户点击表单提交数据,然后进入网页B。当他点击后退按钮时,我需要从服务器刷新网页A,而不是从缓存加载。我有这样一个:,但它似乎不起作用。我还尝试在B页上设置一个变量(通过php的会话变量),然后在a页上检查它,并根据它的存在刷新(或不刷新)。这似乎也不管用。这方面的基本代码是: A页: 在PHP解决方案中,它只是不断尝试在一个永无止境的循环中刷新页面。我的逻辑中缺少了什么?这样做对吗 编辑 进一步调查后,当您告诉浏览器不要缓存页面时,是否也会强制服务器端进行完全刷新?这就是我需要

我有一个网页A。用户点击表单提交数据,然后进入网页B。当他点击后退按钮时,我需要从服务器刷新网页A,而不是从缓存加载。我有这样一个:
,但它似乎不起作用。我还尝试在B页上设置一个变量(通过php的会话变量),然后在a页上检查它,并根据它的存在刷新(或不刷新)。这似乎也不管用。这方面的基本代码是: A页:

在PHP解决方案中,它只是不断尝试在一个永无止境的循环中刷新页面。我的逻辑中缺少了什么?这样做对吗

编辑
进一步调查后,当您告诉浏览器不要缓存页面时,是否也会强制服务器端进行完全刷新?这就是我需要的。服务器端完全刷新页面。

您的JavaScript应该

window.location = "/****/****/*****.php"
我认为这应该可以修复您的循环。

尝试使用以下三种方法:

<meta http-equiv="cache-control" content="no-cache"> <!-- tells browser not to cache -->
<meta http-equiv="expires" content="0"> <!-- says that the cache expires 'now' -->
<meta http-equiv="pragma" content="no-cache"> <!-- says not to use cached stuff, if there is any -->

好,试试这个:

<?php
    if(!session_id()) {
        @session_start();   
    }
    header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
    header('Last-Modified: ' . gmdate( 'D, d M Y H:i:s') . ' GMT');
    header('Cache-Control: no-store, no-cache, must-revalidate');
    header('Cache-Control: post-check=0, pre-check=0', false);
    header('Pragma: no-cache'); 

    if(isset($_SESSION['form_submitted'])) {
        unset($_SESSION['form_submitted']);
        header('Location: ?' . uniqid());
        #header('Refresh: 0');
    }
?>

您需要在第2页上设置$\u会话['form\u submitted']=true。


<?php 
  session_start();
  if(isset($_SESSION['reloadPage'])) {
  unset($_SESSION['reloadPage']);
  echo'
  <script>
  window.location.replace("/****/****/*****.php");
  </script>
  ';
}
?>

我知道这是一个老问题,并且已经有了答案(没有从服务器刷新)。所以我想分享一个使用jQuery的解决方案

$('#back-button').click(function(){
   setTimeout(location.reload(true), 1000);
});
说明:
单击“上一步”按钮时,将在1秒(1000毫秒)后触发
setTimeout
。然后,页面将从服务器重新加载,因为
reload
中的参数为
true


如果将
true
放入
reload
中,它将从服务器重新加载,而如果将
false
放入,它将从缓存重新加载。来源。

未按预期工作。但进一步思考后,似乎它并没有缓存页面。。。但是,据我所知,它并没有刷新服务器端。它们是我们可以查看的在线版本吗?我会看看我是否可以获得一些公开的东西。让它工作了-这工作了。我第一次没有工作,因为我忘了我正在测试的其他一些代码让我觉得合适。一旦我记得它在那里并删除了它,它就起作用了。谢谢你的帮助。上面说重定向太多了。。。虽然我相信这是迄今为止最好的解决办法。似乎没有正确地取消设置reloadPage变量。可能是标头已经发送,如果在标头之前有任何输出代码,如任何HTML或echo/print,或任何其他输出到文档的代码,则会发生这种情况,标头应该是第一个发送的内容。这通常会产生一个“header ready sent”错误,因此它也可能是未取消设置的会话变量,并且它在循环中保持不变,尝试稍微调整一下,或者检查变量的某个值,并将其设置为null而不是取消设置等。它们是我们可以看到的在线版本吗?
<?php 
  session_start();
  if(isset($_SESSION['reloadPage'])) {
  unset($_SESSION['reloadPage']);
  echo'
  <script>
  window.location.replace("/****/****/*****.php");
  </script>
  ';
}
?>
<?php 
    session_start();
    if(isset($_SESSION['reloadPage'])) {
        unset($_SESSION['reloadPage']);
           //no outputting code above header
        header("Cache-Control: no-cache, must-revalidate");
        header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
        header("Location: http://www.mypage.com/");
    }
?>
$('#back-button').click(function(){
   setTimeout(location.reload(true), 1000);
});