猿问

检查PHP会话是否已经启动

检查PHP会话是否已经启动

我有一个PHP文件,有时从已启动会话的页面调用,有时从未启动会话的页面调用。所以当我有session_start()在这个脚本中,我有时会收到“会话已经启动”的错误消息。为此,我把这些台词:

if(!isset($_COOKIE["PHPSESSID"])){
  session_start();}

但这一次我收到了一个警告信息:

注意:未定义变量:_session

是否有更好的方法来检查会话是否已经开始?

如果我用@session_start它会不会使事情正常运作,并关闭警告?


慕尼黑5688855
浏览 1075回答 3
3回答

倚天杖

对于PHP 5.4.0之前的版本:if(session_id() == '') {     // session isn't started}不过,IMHO,如果您不知道会话是否已启动,则应该考虑重构会话管理代码.尽管如此,我的意见是主观的,在有些情况下(下文的评论中介绍了其中的例子),可能无法知道会议是否开始。

慕妹3242003

PHP 5.4会话状态(),这比依赖session_id().考虑以下片段:session_id('test');var_export(session_id() != ''); // true, but session is still not started!var_export(session_status() == PHP_SESSION_ACTIVE);  // false因此,要检查会话是否已启动,PHP 5.4中推荐的方法是:session_status() == PHP_SESSION_ACTIVE
随时随地看视频慕课网APP
我要回答