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.