勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPにて同一サーバの別ディレクトリでセッションを振り分ける方法

   2024/02/22  PHP

同じサーバ内にmemberとownerの別ディレクトリがあり、それぞれにsessionを用いたログインシステムを作りたかった。owner側にsessionを用いたログインシステムを入れており、member側には何も入れていなかった。

そういう経緯なのでowner側のシステムをコピペでいけるかと思ったが、よくよく考えると同一サーバでsessionを発行した場合に変なことになるんじゃないかとも思った。

具体的にはownerにログインした後にmemberディレクトリに行ったら、既にログインされた(sessionが発行された)扱いになるんじゃないかと。

調べたところやはりそのような挙動になるみたいで、解決策はsession_name()を使えば良いとのこと。

 

使い方

<?php #何も指定しない場合のsession_nameはPHPSESSIDになる(php.iniの設定で変更可能)
session_start();
?>

<?php #指定する事で別のsession_nameでsessionを発行できる
session_name('MEMBER');
session_start();
?>

<?php #以下のような指定をした場合
session_name('MEMBER');
session_start();

$_SESSION['name'] = 'member_name';
?>

<?php #var_dumpするとmember_nameが返される
session_name('MEMBER');
session_start();

var_dump($_SESSION);
?>

<?php #var_dumpするとNULLが返される
session_start();

var_dump($_SESSION);
?>

<?php #さらに以下のような指定をした場合
session_start();

$_SESSION['name'] = 'owner_name';
?>

<?php #var_dumpするとmember_nameが返される
session_name('MEMBER');
session_start();

var_dump($_SESSION);
?>

<?php #var_dumpするとowner_nameが返される。つまり別セッションとして扱う事ができる
session_start();

var_dump($_SESSION);
?>

 

リファレンス

http://php.net/manual/ja/function.session-name.php

 

その他

sessionログインした後にfirefoxとかでcookieを見るとPHPSESSIDと入っており、これは何だろうと思っていたけど、session_nameのデフォ値であると知ってちょっとすっきりした。

まだシステム実装はしてないけどテストした感じでは問題なさそう。結果は実装&テスト後に追記する。

 

2017/07/18追記

実装したところ問題なし。この方法で使っていけそう。

 - PHP

  関連記事

PHPでCannot re-assign auto……のエラー
PHPでCannot re-assign auto……のエラー

PHPバージョンアップに伴い「Fatal error: Cannot re-as ...

【2025年版】PHPとStripeを用いてサイト内にクレカ決済及びキャンセル機能を実装する方法
【2025年版】PHPとStripeを用いてサイト内にクレカ決済及びキャンセル機能を実装する方法

5年ほど前にPHPとStripeを用いたクレカ決済機能をテスト実装したが最近試し ...

PHPで複数の変数に同じ値を代入する方法(多重代入 / 一括代入 / 同時代入)
PHPで複数の変数に同じ値を代入する方法(多重代入 / 一括代入 / 同時代入)

PHPのソースコード上に「$a = $b = $c = 12;」みたいな見たこと ...

PHP Qr Codeライブラリを使用してQRコードを生成する方法
PHP Qr Codeライブラリを使用してQRコードを生成する方法

PHPでQRコードを生成したい。大分前にGoogle Chart APIを用いて ...

PHPで指定したディレクトリ内のファイル名を取得し、更新日時順でJSON形式にて出力する方法
PHPで指定したディレクトリ内のファイル名を取得し、更新日時順でJSON形式にて出力する方法

先日summernoteに対してギャラリー画像挿入機能を追加する方法をメモしたが ...