0

コントロール パネル ユーザーには、アクセスするために秘密のコードが必要なページが 1 つあります。

これを行うための私のシーケンスは次のとおりです。

  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回更新した後、正しい値が表示されます。リアルタイムにする方法は?したがって、セッションが設定されている場合、ページは設定された値を直接確認でき、セッションがクリアされた場合、ページは秘密コードを尋ねます。

4

1 に答える 1

1

ステップ 4: print_r($_SESSION) でセッションをダンプして、設定されているかどうかを確認します。そうでない場合は、リダイレクトを行うにステップ 2 で設定する必要があります。

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

于 2012-01-05T08:28:09.210 に答える