会话变量已设置,但PHP报告未设置?

时间:2012-03-15 06:56:05

标签: php session variables isset

print_r($_SESSION);

给了我这个:

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

标记已设置,但为空,对吧?当我实现这个:

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

脚本死了。为什么会这样?

2 个答案:

答案 0 :(得分:3)

来自documentation -

  

bool isset(混合$ var [,混合$ ...])

     

isset确定变量是否已设置且不是NULL

另外 -

  

返回值:如果var存在且值不是,则返回TRUE   NULL,否则为FALSE。

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

答案 1 :(得分:1)

$ _SESSION ['token']中没有任何值,这就是为什么它会在条件和死亡时陷入其中。