PHP中的逻辑错误或if条件错误

shy*_*.me -1 php if-statement logical-or

我有文件category.php,它将GET['cat']参数传递给process_edit.php

process_edit.php里面有这个代码..

if (!isset($_GET["cat"]) || !isset($_GET["new_field"])) {
    header ("location: category.php"); 
    exit;
    }   
else {      
    if (! ctype_digit($_GET["cat"])) { 
        header("location: category.php");
        exit; 
    }   
}
Run Code Online (Sandbox Code Playgroud)

但是,当我通过'cat'时,它会进入第一个IF语句,而不是ELSE部分进行.

任何人都可以建议错误是什么?

Dan*_*ssy 6

让我们分解一下:

if (!isset($_GET["cat"]) || !isset($_GET["new_field"])) {
Run Code Online (Sandbox Code Playgroud)

这意味着,如果未设置cat,或未设置OR new_field,则条件为真.

如果你传递了cat,但是你没有传递new_field,那么条件仍然是真的.如果你想要它是假的,你需要发送BOTH cat AND new_field.

&&要求所有条件必须为true才能返回true,否则返回false.

|| 要求任何给定条件必须为true才能返回true,否则返回false.

您可以在此处找到PHP逻辑运算符的完整参考:

http://php.net/manual/en/language.operators.logical.php