php - 如果 php $_SESSION 变量有数据
问题描述
我是 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 中是如何工作的吗?
解决方案
你的 if 条件是倒退的。
empty()
如果变量 in 未设置或包含空值,则返回 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']);
}
}
推荐阅读
- openj9 - 我是 OpenJ9 新手,需要在 RCP 应用程序中使用 OpenJ9 分析工具
- dialogflow-es - 谷歌家庭设备用户ID重新生成
- swift - 使用带有旋转精灵的 frame.contains()
- android - Android 应用内结算总是回复错误 3:BILLING_UNAVAILABLE
- wordpress - GTM 和 wordpress
- android - 如果我按下后退按钮,如何保存活动状态?
- android - 把 android:largeHeap="true" 放在不同的设备上会导致不同的行为
- javascript - TypeError:_this2.handleClick 不是 ReactJS 中的函数
- php - MySQL select with MIN() 不会选择所有行
- android - 隐藏 AlertDialog 的 OK 和 Cancel 按钮