PHP 5.4 及以上可以用 session_status() 的返回值来判断,PHP 5.4 以下用 session_id() 是否有值来判断,当然,PHP 5.4 也可以用这种方法判断,参考代码如下:
/**
* 会话是否已开启
*
* @return bool
*/
function session_is_started() {
if (php_sapi_name() !== 'cli') {
if (version_compare(phpversion(), '5.4.0', '>=')) {
return session_status() === PHP_SESSION_ACTIVE ? true : false;
} else {
return session_id() === '' ? false : true;
}
}
return false;
}
示例:
// 开启Session
if (session_is_started() === false) {
session_start();
}
官方 session_status() 返回值为
- PHP_SESSION_DISABLED:会话是被禁用的。
- PHP_SESSION_NONE:会话是启用的,但不存在当前会话。
- PHP_SESSION_ACTIVE:会话是启用的,而且存在当前会话。
- 0 ----> PHP_SESSION_DISABLED if sessions are disabled.
- 1 ----> PHP_SESSION_NONE if sessions are enabled, but none exists.
- 2 ----> PHP_SESSION_ACTIVE if sessions are enabled, and one exists.