【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();
}