4

さて、いくつかの選択ボックスを持つphpスクリプトがあり、選択した値をセッション配列に保存したいとしましょう。これまで、次の構造を使用してセッション配列に値を割り当てました。

$_SESSION[SCRIPT_NAME]['filter_data']

SCRIPT_NAME は、スクリプト名を置く定数です。これは、すべての php-script ごとにセッション変数を一意にするためです。ユーザーが 2 つ以上のタブで同じスクリプトを開いて同時に作業するまでは、すべて問題ありません。この場合、変数が混在し、問題が発生します...

すべてのスクリプト インスタンスごとにセッション変数を完全に一意にする方法について何か考えがあるでしょうか? または、機能を別の方法で実現するためのアドバイスはありますか?

現在、変数を URL で渡すことができますが、このオプションは好きではありません。セッションを使用したいのですが、Web アプリケーションのすべてのスクリプトに、ユーザー ログイン セッション全体でのユーザーの選択を記憶させたいと考えています。

4

6 に答える 6

3

「...すべてのスクリプトインスタンスごとにセッション変数を完全に一意にする方法は?」

基本的に答えは「できません」です。これは、ブラウザーのすべてのインスタンス (ウィンドウとタブ) が同じ Cookie jar を共有するためです。したがって、両方のインスタンスが同じ Cookie を返し、同じセッションに接続されます。「実生活」ではめったに問題になりませんが、これまで見てきたように、開発者を狂わせます ;-)

于 2012-12-30T18:35:58.793 に答える
0

これは非常に古い質問ですが、他のプログラマーや初心者の友人のために書いています。

クライアントからのすべてのリクエストに対して検証ページを設定して、セッション変数をチェックするだけです。例:または、ソース コードのすべてのページに リファレンスvalid_ref.php ページを使用し、リファレンス ページのクライアント要求に従って他のページを呼び出します。の以前のデータと、この方法を使用すると、1 つのクライアントからのブラウザーの新しいタブで問題が発生することはありません。index.php or home.php or ref.php$_SESSION[SCRIPT_NAME]['filter_data']$_SESSION[SCRIPT_NAME]['filter_data']

于 2020-09-22T13:15:25.953 に答える