12

ウェブページAがあります。ユーザーがフォームをクリックしてデータを送信すると、ウェブページBに移動します。戻るボタンをクリックすると、ウェブページAがキャッシュから読み込まれるのではなく、サーバーから更新される必要があります。私はこれを持っています:<meta http-equiv="expires" content="0">しかし、それはうまくいかないようです。また、ページBで変数(phpを介したセッション変数)を設定してから、ページAで変数を確認し、その存在に応じて更新(または更新しない)してみました。これもうまくいかないようです。そのための基本的なコードは次のとおりです。ページA:

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

そしてBページ:

$_SESSION['reloadPage'] = 1;

PHPソリューションを使用すると、無限ループでページを更新しようとし続けるだけです。私のロジックに何かが欠けていますか?これはそれについて行く正しい方法ですか?

編集 さらに調査したところ、ページをキャッシュしないようにブラウザに指示すると、サーバー側全体も強制的に更新されますか?それだけが必要。ページのサーバー側の完全な更新。

4

6 に答える 6

5

代わりにこれを試してください:

<?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ページで$_SESSION['form_submitted']=trueを設定する必要があります。

于 2012-04-12T21:59:40.527 に答える
2

3つすべてで試してください:

<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 -->
于 2012-04-12T21:58:15.940 に答える
1
<?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/");
    }
?>
于 2012-04-12T22:08:54.383 に答える
1

私はこれが古い質問であることを知っており、すでに答えがあります(サーバーから更新されていません)。そこで、jQueryを使用してソリューションを共有したいと思います。

$('#back-button').click(function(){
   setTimeout(location.reload(true), 1000);
});

説明:
戻るボタンをクリックするsetTimeoutと、1秒(1000ミリ秒)後にトリガーされます。reload次に、ページ内のパラメータがであるため、ページがサーバーからリロードされますtrue

true内部に配置reloadするとサーバーからリロードされ、配置falseするとキャッシュからリロードされます。ソースw3schools

于 2014-04-09T09:32:48.883 に答える
0

JavaScriptは...

window.location = "/****/****/*****.php"

私はそれがあなたのループを修正するはずだと思います。

于 2012-04-12T21:57:27.743 に答える
0
<?php 
  session_start();
  if(isset($_SESSION['reloadPage'])) {
  unset($_SESSION['reloadPage']);
  echo'
  <script>
  window.location.replace("/****/****/*****.php");
  </script>
  ';
}
?>
于 2012-04-12T22:03:09.647 に答える