HOME >> Tips >> PHP

ディレクトリが異なるアプリごとにサイトのセッションを分ける方法

2017/9/10
文書番号:20774


通常、PHP のセッションはドメイン単位で管理されます。

そのため、一つのドメインでディレクトリを分けて複数のアプリを公開した場合、AのサイトとBのサイトでセッション変数が混在し、 AのサイトへログインするとBのサイトでもログインしたことになったり、AのサイトでログアウトするとBのサイトでもログアウトしたことになったりします。


http://example.com/aaa/  と
http://example.com/bbb/  のような場合。

それぞれが独立したアプリであれば他のアプリとセッションが混在するのは致命的です。

こういった場合は「session_name()」を使用することで対応することができます。


通常、「session_start();」をするとセッション変数などを使用することができます。


session_start();
この「session_start();」の前に「session_name();」を指定してセッション名を指定します。
※通常、これを指定しない場合は自動でランダムにセッション名が設定されます。

session_name("hogehoge");
session_start();

Aのサイトのすべての「session_start」の前に同じ文字列で「session_name()」を指定します。
BのサイトではAのサイトとは異なる文字列で「session_name()」を設定します。

これでセッションは同じセッション名の中だけで管理されますので複数のサイトのセッションを別々に管理することができます。

【参考情報】

[PHP マニュアル] session_name
http://php.net/manual/ja/function.session-name.php