0

抱歉,我找不到更好的主题。

我有一个购物车页面,我正在更改两件事......我将向您展示的代码有效,但我想将它们结合起来。

if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1)

上面的代码检查购物车是否为空

if ($_SESSION['User']['AccessLvl'] == null) { *this code check if the user is logged in or not.*

我的问题 我有一个问题,我只想在购物车为空时才form在页面上显示此表单。购物车是空的,表格不应该显示。 如果用户已经登录,表单也会显示。Ifshouldn't

echo ' <form name="login" action="login.php">

</form>';

我厌倦了这个

if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) {
} else {

if ($_SESSION['User']['AccessLvl'] == null) {
echo ' <form name="login" action="login.php">

</form>';

} else {

}
}

总结 如果用户登录,SHOULD ONLY, if user is NOT logged in 表单应该只在他们是购物车中的东西(项目)时显示。andNOT

SHOULD NOT 如果用户已经登录,则表单不应显示,因为要求某人登录两次是没有意义的。

有人能帮助我吗。谢谢

4

3 回答 3

3

这应该可以解决问题:

if (!(!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) && $_SESSION['User']['AccessLvl'] == null) {
    echo ' <form name="login" action="login.php"></form>';
} else {
    ...
}

以下只是对 if 条件的解释。这不是有效的语法:

如果卡不是空!(!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1)的 > 并且用户没有登录 >$_SESSION['User']['AccessLvl'] == null它会显示表单。

于 2013-07-29T08:31:25.827 回答
2

第一个条件:

if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1)

可以简化为:

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

因为count()只有在数组为空时才返回小于 1 的值。此外,empty()还表现得像isset()内部一样。

然后,您可以像这样简单地添加其他条件:

if (!empty($_SESSION['cart_array']) && !isset($_SESSION['User']['AccessLvl'])) {
    // show form
}

如果它不存在,则isset()在尝试访问时不会发出通知。$_SESSION['User']['AccessLvl']

更新

为了使整个事情更容易维护,您可以引入一些辅助函数,例如:

function isCartEmpty()
{
    return empty($_SESSION['cart_array']);
}

function isLoggedIn()
{
    return isset($_SESSION['User']['AccessLvl']);
}

if (!isCartEmpty() && !isLoggedIn()) {
    // show form
}
于 2013-07-29T09:16:27.997 回答
1

好的,所以本质上您要检查您的状况有两件事,即我们有两个变量:

变量 1:购物车是空的

变量 2:用户已登录

因此,当有人访问您的页面时,我们有 4 种可能发生的事件:

  1. 购物车为空且用户已登录

  2. 购物车为空且用户未登录

  3. 购物车不为空且用户已登录

  4. 购物车不为空且用户未登录

现在这是您关于您希望表单显示的条件的最后一条评论:

“表单不应该显示用户是否已经登录以及登录的用户购物车是否为空”

所以在第一部分你不想要用户登录时的表单,这意味着上面的选项 1 和 3 不应该显示表单(我们剩下 2 和 4),然后你说你不想要购物车为空时的表单,这意味着选项 2 是否,我们只剩下选项 4,此时您确实希望表单显示:

您在以下情况下需要表单:购物车不为空且用户未登录

翻译成代码:

购物车不是空的:

!(!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1)

用户未登录:

$_SESSION['User']['AccessLvl'] == null

与 AND 结合,你得到

if (!(!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) && $_SESSION['User']['AccessLvl'] == null) {
    echo ' <form name="login" action="login.php"></form>';
} else {
    ...
}

正如@TobiasKun 在他的回答中发布的那样

于 2013-07-29T09:11:20.610 回答