0

2 つの Web サイトが同じセッション変数を使用し (それらは私が書いた同じコードを共有しています)、同じブラウザーで (2 つのタブで) 開いている場合、SiteA のセッションは SiteB の値と混同され、その逆も同様です。たとえば、SiteA で設定$_SESSION['var1']=1し、同じブラウザーで SiteB を開いて実行すると、ダンプarray_dump($_SESSION)に表示されます。var1

セッション変数のセットを 1 つのサイトのみの「スコープ」内にとどめるにはどうすればよいですか?

4

3 に答える 3

1

これらのセッションは同じドメインにあり、両方が同じセッション Cookie 名を使用していると思います。session_name(を実行する前に)を使用して、このセッションの名前を変更しますsession_start

http://de1.php.net/manual/en/function.session-name.php

于 2012-11-27T14:27:50.180 に答える
0

セッション変数にプレフィックスを追加して、セッション変数を区別することはできますか?

例えば

siteA_loggedIn
siteB_loggedIn
于 2012-11-27T14:22:59.313 に答える
0

同じドメイン名で 2 つの別々のサイトを実行している場合、それらは実際にデフォルトでセッション データを共有しますが、これは変更できます。セッション Cookie の名前はディレクティブとして設定さphp.inisession.nameますが (デフォルトではPHPSESSID)、それを で上書きできますsession_name()

代わりに、1 つのサイトでセッション Cookie を呼び出す必要がありますSessionSiteA(セッション名は英数字で、少なくとも 1 つの文字が含まれている必要があります)。

したがって、オプションは次のとおりです(a)php.iniサイトごとに異なるファイルを用意します。(b) の値を上書きします.htaccess(これは一部の設定では許可されていますが、すべてのphp.ini設定では許可されていません。現時点では、それを行う方法がわかりませsession.nameん: できない可能性があります)。または (c)session_name()セッションを設定または読み取る前に、いずれかのサイトで関数を呼び出します。は計算コストsession_name()が高くなる可能性があるため、注意して使用してください (おそらく、いずれかのサイトのみで使用し、ビジーなサイトにはデフォルトを使用させます)。PHPSESSID

注:別のオプションとして、各サイトのセッションを別の場所に保存し、サイトごとにini_set('session.save_path', ...)異なる方法で使用することもできます。上記のように、これは、セッションが設定または使用される前に、中央で行う必要があります。

于 2012-11-27T14:26:09.413 に答える