如果php $ _SESSION变量具有数据

时间:2019-03-16 11:26:42

标签: php session session-variables

我是php新手。我正在尝试检查会话变量是否具有值?如果是,则别无其他设置值。这是我的代码:

if (isset($_POST['ProductName'])) {
    if (!empty($_SESSION['UserBasketID'])) {
        $order = $_POST['ProductName'];
        $date = date("Ymd");
        $_SESSION['UserBasketID'] = $date.$order;
        var_dump($_SESSION['UserBasketID']);            
    } else {
        echo 'The session is set';
        if (isset($_SESSION['UserBasketID'])) {
            var_dump($_SESSION['UserBasketID']);
        }
    }
}

有人可以告诉我它在php中如何工作。

3 个答案:

答案 0 :(得分:1)

您的if条件向后。

empty()如果未设置变量或包含空值,则返回true。
如果设置了变量 并且不包含空值,则!empty()(前面带有!)将返回true。

代码如下:

if (!empty($_SESSION['UserBasketID']))

如果会话已定义且具有非空值,则评估为true,这意味着您当前仅在已设置会话的情况下对其进行设置。

删除!前面的empty(),它应该可以工作:

if (isset($_POST['ProductName'])) {
    if (empty($_SESSION['UserBasketID'])) {
        $order = $_POST['ProductName'];
        $date  = date("Ymd");
        $_SESSION['UserBasketID'] = $date . $order;
        var_dump($_SESSION['UserBasketID']);            
    } else {
        echo 'The session is set';

        // We can remove the if-statement here since we
        // we've already checked it
        var_dump($_SESSION['UserBasketID']);
    }
}

答案 1 :(得分:0)

您必须首先使用session_start()

答案 2 :(得分:0)

php documentation声明自7.1.0起:

  

session_start()现在返回FALSE,并且在无法启动会话时不再初始化$ _SESSION。

现在检查会话属性是否设置的正确方法是:


if (session_start() && isset($_SESSION['UserBasketID'])) {
   // $_SESSION['UserBasketID'] is set
} else {
   // Either no session, $_SESSION not initialized or $_SESSION['UserBasketID'] not set
}