关于会话变量的这个php表达是什么意思?

时间:2011-12-27 11:56:38

标签: php

isset($ _ SESSION)是什么意思?我找到了以下代码片段 -

if (!isset($_SESSION)) {

// php code

}

编辑:

我在facebook风格的聊天脚本的define.php中找到了以下代码段 freichat

if (!isset($_SESSION)) {
            $this->frm_id = $_SESSION[$this->uid . 'usr_ses_id'];
            $this->frm_name = $_SESSION[$this->uid . 'usr_name'];
        }

如果之前没有设置$ _SESSION,那么如何将两个会话变量分配给其他变量?

4 个答案:

答案 0 :(得分:2)

这意味着如果session($_SESSION是数组,PHP的内置变量)未设置(用!指定)。这基本上检查是否没有活动的会话变量/数组,在这种情况下做某事/运行php代码。

虽然正确的方法是通常检查特定的会话变量,如:

if (!isset($_SESSION['key name'])) { ... }

有关详细信息,请参阅文档:

答案 1 :(得分:1)

我的评论摘要:

  

请注意,在使用会话时,在使用session_register()函数注册变量或向$_SESSION超全局数组添加新密钥之前,不会创建会话记录。无论是否使用session_start()函数启动了会话,这都适用。

当没有会话存在时,您的if (!isset($_SESSION))将评估为true。然后它将执行if块中的代码。但是,该代码不起作用。如果你run this snippet

<?php
var_dump($_SESSION);                // undefined notice + NULL
var_dump(isset($_SESSION));         // FALSE
if (!isset($_SESSION)) {            // !FALSE is TRUE
    $foo = $_SESSION['usr_ses_id']; // undefined notice
}
var_dump($foo);                     // NULL
var_dump($_SESSION);                // still undefined undefined + NULL

你会看到它输出:

Notice: Undefined variable: _SESSION in /code/Kx2RMF on line 2
NULL 
bool(false)
Notice: Undefined variable: _SESSION in /code/Kx2RMF on line 5
NULL
Notice: Undefined variable: _SESSION in /code/Kx2RMF on line 8
NULL 

因此,除非我遗漏了某些内容,否则我会说聊天脚本中的代码毫无意义。

答案 2 :(得分:0)

检查是否已设置任何会话变量。在PHP中,$_SESSION是一个值数组,因此,如果不指定[]运算符,则会检查是否已设置$_SESSION

答案 3 :(得分:0)

这意味着会话尚未初始化,您应该在尝试使用任何会话功能之前调用session_start()

http://php.net/manual/en/function.session-start.php

http://php.net/manual/en/reserved.variables.session.php