Если переменная php $ _SESSION содержит данные - PullRequest
1 голос
/ 16 марта 2019

Я новичок в 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 ]

1 голос
/ 16 марта 2019

Ваше условие if обратное.

empty() возвращает значение true, если переменная не установлена ​​или содержит пустое значение.
!empty()! передit) возвращает 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']);
    }
}
0 голосов
/ 16 марта 2019

В документации php указано, что с 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
}
0 голосов
/ 16 марта 2019

Сначала вы должны использовать session_start()

...