如果php $_SESSION 变量有数据
If php $_SESSION variable has data
我是 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()
returns 如果变量未设置或包含空值则为真。
!empty()
(前面有 !
)returns 如果变量 已设置 且不包含空值,则为真。
所以代码:
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']);
}
}
php documentation 指出自 7.1.0 以来:
session_start() now returns FALSE and no longer initializes $_SESSION when it failed to start the session.
因此,现在检查会话 属性 是否已设置的正确方法是:
if (session_start() && isset($_SESSION['UserBasketID'])) {
// $_SESSION['UserBasketID'] is set
} else {
// Either no session, $_SESSION not initialized or $_SESSION['UserBasketID'] not set
}
我是 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()
returns 如果变量未设置或包含空值则为真。
!empty()
(前面有 !
)returns 如果变量 已设置 且不包含空值,则为真。
所以代码:
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']);
}
}
php documentation 指出自 7.1.0 以来:
session_start() now returns FALSE and no longer initializes $_SESSION when it failed to start the session.
因此,现在检查会话 属性 是否已设置的正确方法是:
if (session_start() && isset($_SESSION['UserBasketID'])) {
// $_SESSION['UserBasketID'] is set
} else {
// Either no session, $_SESSION not initialized or $_SESSION['UserBasketID'] not set
}