会话变量已设置,但PHP报告它没有设置?

问题描述:

print_r($_SESSION); 

给了我这样的:会话变量已设置,但PHP报告它没有设置?

 
[post] => 
[verify] => 3bae5359ea60d7f00d553ae5d091ae4b 
[token] => 

标记设置,但空,对不对?当我执行此操作时:

if (!isset($_SESSION['token'])) { 
    die("Token not set"); 
} 

该脚本死亡。这是为什么发生?

+1

该值可能为空。 – 2012-03-15 06:58:49

documentation -

布尔isset(混合是$ var [,混合$ ...])

isset确定是否变量被设置,而不是NULL

另外 -

返回值:返回TRUE如果var存在且其值不等于 NULL,否则返回FALSE。

因此,如果提供的参数包含NULL或者它根本不存在,那么isset将返回FALSE。这正是您的脚本所发生的情况,并因此而死亡。

+0

啊,傻了。谢谢。 (当它让我在10米时会接受) – Norse 2012-03-15 07:00:16

$ _SESSION ['token']中没有任何值,这就是为什么它在条件下死亡并死亡的原因。