1

大学の最終学年プロジェクト用に 2 つの動的 Web サイトを開発しています。タブでブラウジングし、両方の Web サイトを同じブラウザーで同時に開いていると、次のようなことが起こることがあります。

ログインを追跡するためにセッションを使用し、最後にセッションを破棄 (ログアウト) してシステムをログアウトします。この「session_destroy();」のため 「localhost」で実行されている別のサイトがログアウトを引き起こします。

この問題を克服するにはどうすればよいですか?

特にセッション変数の破棄を提案しないでください (つまりunset($_SESSION['usename'])、適切な方法を提案してください。非常に感謝します。☺</p>

4

2 に答える 2

3

プレフィックス (Web サイトで使用) を使用し、スペックのみでセッションを破棄することをお勧めします。プレフィックス

ウェブサイト 1

define("prefix", "firstweb_");
$_SESSION[prefix.'logged'] = true;

ウェブサイト 2

define("prefix", "secondweb_");
$_SESSION[prefix.'logged'] = true;

ウェブサイトワンログアウト

destroy_session();

関数

function destroy_session()
{
  foreach($_SESSION as $key => $value)
  {
    if(preg_match('/^'.prefix.'/', $value))
      unset($_SESSION['key']);
  }
}
于 2013-06-30T18:58:13.530 に答える
3

Make sure the cookie paths are set properly per website:

session_set_cookie_params(600,'/website1/','localhost');
session_start();

http://uk3.php.net/manual/en/function.session-set-cookie-params.php

Sessions will default their path parameter to just '/', hence this override being required when working locally.

于 2013-06-30T18:58:43.010 に答える