コントロール パネル ユーザーには、アクセスするために秘密のコードが必要なページが 1 つあります。
これを行うための私のシーケンスは次のとおりです。
- アクセスしたいページをパラメータにして「シークレットコードリクエストページ」に移動します。
- シークレット コードを確認し、正しければ、セッション変数に「ハッシュされたページ名」を入力します。
- アクセスしたいページにリダイレクトします。
- このページは、この「ページ名」と一致するかどうか「ハッシュされたセッション」をチェックします
- 一致する場合はセッションをクリアしてページ全体を表示し、一致しない場合は最初のページにリダイレクトします。
問題は次のとおりです。ステップ 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回更新した後、正しい値が表示されます。リアルタイムにする方法は?したがって、セッションが設定されている場合、ページは設定された値を直接確認でき、セッションがクリアされた場合、ページは秘密コードを尋ねます。