检查会话是否设置,如果没有则创建一个?

9
我想检查当前是否设置了会话,如果设置了,则允许页面正常运行(不执行任何操作),如果没有,则创建一个会话。
我查看了另一个SO问题,在其中发布了以下代码:
if ( empty( $_SESSION['login'] )) { } else { }

这个问题的最简单解决方案是否为每个会话设置像$_SESSION['a']这样的内容,然后运行if(empty($_SESSION['a']))来检查会话是否存在?
但是,能否在第一次使用之前就使用会话变量而不调用session_start(),从而使其过时(我昨天尝试了这个作为一个echo,但没有意识到需要在echo变量之前调用session_start())。
可能有一种经常使用的简单方法,但我似乎找不到它。
非常感谢您的帮助!
1个回答

24

session_id() 返回表示当前会话的字符串。如果会话尚未初始化,则返回一个空字符串。

 if(session_id())
 {
      // session has been started
 }
 else
 {
      // session has NOT been started
      session_start();
 }

非常感谢:)计时器结束后我会接受。 - Fireworksable
3
进一步改进 - 您不需要检查字符串是否为 false - 使用 session_id() 的返回作为测试本身;空字符串是“falsey”值,这意味着 ''if 语句中将被解析为 false。 - Nightfirecat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接