PHP isset($ _ SESSION [$ var])根本不工作

Jor*_*dir 5 php session isset

在我的项目中,我有一个包装类$_SESSION,因此可以访问会话变量$session->var.我试图使用以下方法检查是否设置了会话变量isset:

if (!isset($this->session->idUser)) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是isset没有返回任何东西.所以在我的包装器类中,我编写了以下函数来测试发生了什么.

public function isItSet($var)
{
   die(isset($_SESSION["id"]));
}
Run Code Online (Sandbox Code Playgroud)

这导致一个空页面.我试过了:

public function isItSet($var)
{
    die(is_null(isset($_SESSION["id"])));
}
Run Code Online (Sandbox Code Playgroud)

还是一个空白的页面.然后我尝试了:

public function isItSet($var)
{
    die(isset($_SESSION));
}
Run Code Online (Sandbox Code Playgroud)

这返回1.

任何人都可以告诉我为什么尝试检查会话变量是否设置返回什么?

F21*_*F21 8

为了支持isset()你需要重载包装器中的函数.

所以,在你的包装器中,添加:

public function __isset($var){
  return isset($_SESSION[$var]);
}
Run Code Online (Sandbox Code Playgroud)

要使用它,您只需要:

isset($this->session->myVar);
Run Code Online (Sandbox Code Playgroud)

如果仍然无效,请执行以下操作:

var_dump($_SESSION)
Run Code Online (Sandbox Code Playgroud)

这将转储整个$ _SESSION数组,并显示您要检查的变量是否确实存在.