我是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中如何工作。
答案 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
}