【php】セッションを開始しているかどうか判定する
問題
phpで、session_start()しているかどうか判別可能でしょうか。
答え
php5.4以降では、session_status()関数が使える。
セッションを開始していなかったら開始する例
if (session_status() == PHP_SESSION_NONE) { // セッションは有効で、開始していないとき session_start(); }
php5.3以前では、セッションを開始していないと session_id() で空文字が返ってくるのを利用できる。
if(session_id() == '') { // セッションは開始していない // ので、開始する session_start(); }
細かい注意
session_start() しないで session_id(‘test’) などした場合、session_id() 空文字を返さなくなるので、場合によっては session_id()を使う方法では正しく判定できないこともありうる。
session_status() を使うほうが正確。
できるだけ session_status()を使い、php5.3以前も考慮した例
if ((function_exists('session_status') && session_status() !== PHP_SESSION_ACTIVE) || !session_id()) { session_start(); }
コメント