PHPにて同一サーバの別ディレクトリでセッションを振り分ける方法
2024/02/22
同じサーバ内に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とStripeを使ってサイト内でクレジットカード決済処理の実装方法
PHPとStripeの組み合わせでWebサービスにクレジットカード決済処理を導入 ...
-
-
PHPからDBX Platformを利用してサーバ内のファイルをアップロードする方法
PHPで何らかのファイルを保存するようなケースだと今まではローカルに保存する、も ...
-
-
レンタルサーバでPHPのsystem関数やexec関数が使用できずにエラーが出力される
レンタルサーバ上でPHPのsystem関数を実行しようとすると「Fatal er ...
-
-
フォルダにリンク制限をかける
imgというフォルダがあり、直接URLを叩いても 中身を見られないけど、同一サー ...
-
-
PHPでBlowfishアルゴリズムを用いた暗号化と復号化方法
PHPでBlowfishアルゴリズムを用いてCBCモードで暗号化と復号化を行いた ...