2012-01-05 4 views
0

私は への秘密のコードを必要とする私のコントロールパネルのユーザーの単一ページを持っています。PHPキャッシュミス

これを行うための私の順序は以下のとおりです。

  1. は、私がアクセスするページパラメータを指定して「秘密のコード要求ページ」にアクセスしてください。
  2. 正しい場合は、セッション変数を「ハッシュページ名」で埋めてください。
  3. ページにリダイレクトしてアクセスしてください。
  4. このページに一致するかどうかを確認するには、この「ページ名」
  5. が一致するかどうかを確認し、セッションをクリアし、ページ全体を表示します。一致しない場合は最初のページにリダイレクトします。

問題は次のとおりです。手順4で、ページが時折遅いセッション の更新を読み込むことがあります。時には値が表示されませんが、多くの場合、 正しい値が表示されます。ページを更新すると、セッションにはまだ 正しいハッシュデータがあります(一致する場合は、手順5で、セッションが既にクリアされています)。

mysqlを使ってセッション変数をデータレコードで変更しようとしましたが、 私は同じ結果を得ました。 phpmyadminはレコードがすでに設定されていることを示しますが、 ページにはデータセットが表示されません。それ以外の場合は、レコードが削除された後、 ページには前のレコード値が表示されます。

これはキャッシュに問題があることを意味しますか?

header('Expires: Mon, 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'); 

しかし、私が得た今でも同じ結果:私はまた、ヘッダになど何のキャッシュ もしませんでした。どんな提案人?

更新:私がページをリフレッシュし続けると、おそらく3または5がリフレッシュされた後、正しい値が表示されます。それをリアルタイムにする方法は?そうすれば、セッションが設定されている場合、ページは直接値セットをチェックすることができ、セッションがクリアされた場合、ページは秘密コードを要求します。

+0

でも、デバッグコンソールを見て何を読んだり、プロキシを持っていますか? – SergeS

+0

問題は何ですか、なぜページがセッション変数/ mysqlレコード値の現在の値を表示できないのですか? –

答えて

1

手順4のセッションをダンプして、print_r($ _ SESSION)を設定してください。そうでない場合は、ステップ2でに設定してからにリダイレクトする必要があります。

また、すべてのファイルでsession_start()を呼び出すことを忘れないでください。

+0

シーケンスは正しいですし、私のlocalhostで動作します。アップロードしたときの結果は同じではありません。セッションを印刷しようとすると、現在の値ではありません。 mysql phpmyadminでチェックした場合、データは正しいものの、ページの結果とは異なります。 –

+0

質問を更新 –

+0

コードを投稿できますか?セッションが存在するかどうかを確認してください:echo session_id(); - セッションが常にクッキーに対応していることをご存じのように、何らかの理由でクッキーが最初に設定されない場合、セッションは存在しません。 – Mike