您的位置:首页 > 编程语言 > PHP开发

php 利用 session_status 判断 session 状态

2017-03-17 11:00 483 查看
一、官方 session_status() 返回值为:

PHP_SESSION_DISABLED
 会话是被禁用的。
PHP_SESSION_NONE
 会话是启用的,但不存在当前会话。
PHP_SESSION_ACTIVE
 会话是启用的,而且存在当前会话。

session_status()


二、尝试打印var_dump(session_status()); 值总为int 1
与官方描述不一样,google it,当打印时,会显示如此:

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.

参考

三、思考何时返回 0 或 2 。

1、尝试加上session_start(),打印出了2。

session_start();

var_dump(session_status()); // int 2

说明:
PHP_SESSION_ACTIVE
是指使用了session_start() 启动新会话或者重用现有会话.


2、尝试在session_start()
后使用 session_destroy(),期望得到0。




session_start();

session_destroy();

var_dump(session_status()); // int 1

说明:结果输入1,证明,现在session状态为 “
PHP_SESSION_NONE
 会话是启用的,但不存在当前会话”。

3、于是思考,当session不能用时状态才为 “
PHP_SESSION_DISABLED
 会话是被禁用的”,即返回0。

af8e
于是修改php.ini session.save_handler = 'cached',重启php,此时,有个warning,同时,返回0;

说明:只有当session 无法使用时,session_status 才返回 0.

————————————————————————————————————————————————————————

总结,要判断是否需要使session_start()函数,可以这样:

if(session_status !== [b]PHP_SESSION_ACTIVE){[/b]

[b]session_start();[/b]

[b]}[/b]


if(session_status !== 2){

session_start();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: