2017-11-21 21 views
0

次のドメインを持ついくつかのWebサイトで、「.example.com」に設定されたPHPセッションドメインを持つ以下のドメインがあります。サブドメインセッションに干渉するPHPセッション

  • example.com
  • shop.example.com

私はまた、次のドメインadmin.example.comで別のサーバーを持っているし、それは独自のセッション/クッキーを使用したいです。 .example.comクッキーがあった場合でも、admin.example.comウェブサイトは、私が.example.comクッキーを削除した場合、ウェブサイトは、正しいを使用して意図したとおりに動作します...

をその値の代わりに、セッションの問題を引き起こしてその.admin.example.comクッキーの値を、使用しようとします.admin.earlowen.com値。

session.cookie_domain.admin.example.comを使用しないでください。私は何か不足していますか?または、それは可能ではありません。

+0

ウェブディレクトリ内の 'admin.example.com'サーバでは、コード付きのスクリプトを作成します:' <? phpinfo(); ?> 'それを実行します。 'session.cookie_domain'オプションにはどのような値が表示されますか? – camelsWriteInCamelCase

+0

@camelsWriteInCamelCase読み込み: '.admin.example.com' –

+0

' session.cookie_domain'指令の反対の 'phpinfo()'からのデータのフィールド 'ローカル値'および/または 'マスター値'に値として表示されますか? – camelsWriteInCamelCase

答えて

1

これらは同じドメインを共有するため、同じサイトでセッションを共有します。

管理セクションでsession_nameを使用して、手動でこれを無効にすることができます。このような

何か:

<?php 
//this forces the admin page to recognize a different cookie as it's session id 
session_name('PHPADMINSESSID'); 

//start the session normally 
session_start(); 

あり、これを行うために他のいくつかのトリッキーな方法がありますが、あなたが簡単にできるようにあなたが何をしたか忘れてすることはできませんので、あなたは一般的に、トリッキーを避ける必要があります後でそれを理解する。でも、私は参考のためにも、それらのいくつかを説明します:

  • デュアルサブドメインは、彼らが使用することができた場合に予想されるホスト名を変更し、2つの異なる固有のセッションが発生します。たとえば、subdomain.example.comexample.comはセッションを共有しますが、subdomain.username.example.comexample.comはセッションを共有せず、別々のセッションを使用します。セッションを管理するバックエンドロジックを実装し、共有することを期待すると、これを回避するのが非常に困難になるため、これを避けるべきです。

  • session_idを使用して別のセッションを強制することもできますが、手動でIDを追跡する必要があり、かなり畳み込まれる必要があります。また、どのセッションに行くのかを追跡するために何らかの種類のデータストア何が不要なオーバーヘッドを追加しますか?

最も簡単な方法は、セッションごとに異なるsession_nameの値を使用することです。

関連する問題