如何判断会话是否处于活动状态?

对于每个请求,您可以通过几种不同的方式来判断会话是否已经开始,例如:

$isSessionActive = (session_id() != "");

要么:

$isSessionActive = defined('SID');

但是,如果您启动会话然后将其关闭,它们都将失败。session_id()将返回前一个会话的ID,同时SID将对其进行定义。同样,如果您已经有一个活动会话,则此时调用session_start()将生成一个E_NOTICE。有没有一种明智的方法来检查会话当前是否处于活动状态,而不必诉诸输出缓冲,关闭运算符(@session_start())或其他类似hacky的方法?

// as of 8/29/2011

$isSessionActive = (session_status() == PHP_SESSION_ACTIVE);

回答:

查看对原始问题的修改;基本上,PHP

5.4及更高版本现在具有session_status()解决此问题的功能!

“通过新功能session_status公开会话状态”(SVN修订版315745)

以上是 如何判断会话是否处于活动状态? 的全部内容, 来源链接: utcz.com/qa/420059.html

回到顶部