大家好,欢迎来到IT知识分享网。
一、官方 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。
于是修改php.ini session.save_handler = ‘cached’,重启php,此时,有个warning,同时,返回0;
说明:只有当session 无法使用时,session_status 才返回 0.
————————————————————————————————————————————————————————
总结,要判断是否需要使session_start()函数,可以这样:
if(session_status !== PHP_SESSION_ACTIVE){
session_start();
}
或
if(session_status !== 2){
session_start();
}
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/29148.html