使用 IF 语句验证两件事


Validation two things with IF statement

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

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

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我想仅在购物车空时才在页面上显示此表单。 If购物车是空的,则表单不应显示。此外,如果用户已登录,则会显示表单shouldn'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表单应仅当它们是购物车中的某些东西(项目(时显示,and如果用户NOT记录它。

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

有人可以帮我吗?谢谢

这应该可以解决问题:

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则会显示表单。

第一个条件:

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
}
好的,

所以本质上你想检查你的条件,那就是我们有两个变量:

变速档 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在他的回答中发布的那样