php 利用 session_status 判断 session 状态
2017-03-17 11:00
483 查看
一、官方 session_status() 返回值为:
session_status()
二、尝试打印var_dump(session_status()); 值总为int 1
与官方描述不一样,google it,当打印时,会显示如此:
参考
三、思考何时返回 0 或 2 。
1、尝试加上session_start(),打印出了2。
session_start();
var_dump(session_status()); // int 2
说明:
session_start();
session_destroy();
var_dump(session_status()); // int 1
说明:结果输入1,证明,现在session状态为 “
3、于是思考,当session不能用时状态才为 “
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();
}
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();
}
相关文章推荐
- PHP,操作多个用户,多个线程的session,实现用户登陆状态session值的自动更新
- 对利用Session纪录datagrid模板列中CheckBox的状态的一点改进
- 利用Memcached在php下实现session机制 替换PHP的原生session支持
- 利用memcached在多台服务器之间共享PHP的session数据
- SQL Server是如何判断Status状态位的?
- 利用Session纪录datagrid模板列中CheckBox的状态
- php通过session判断用户是否登录
- 利用GetIfTable ,GetIfEntry 实时判断网线插拔状态
- 利用GetIfTable ,GetIfEntry 实时判断网线插拔状态
- 利用PHP实现对服务器性能与状态的监控
- 对利用Session纪录datagrid模板列中CheckBox的状态的一点改进
- 利用Session纪录datagrid模板列中CheckBox的状态
- PHP,操作多个用户,多个线程的session,实现用户登陆状态session值的自动更新
- 利用Memcached在php下实现session机制 替换PHP的原生session支持
- PHP 利用MySQL管理Session的回调函数
- 利用Windows API判断文件共享锁定状态
- PHP,操作多个用户,多个线程的session,实现用户登陆状态session值的自动更新
- 利用IRequiresSessionState和IReadOnlySessionState接口判断HttpContext是否具有会话读写权限
- SQL Server是如何判断Status状态位的?
- check connection status, check session status, sqldeveloper, 检测DB连接状态