Ошибка в логическом или в условии if в PHP

У меня есть файл 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; 
    }   
}

но когда я передаю 'кошку', она идет в первом операторе IF, а не в ELSE часть.

Кто-нибудь может подсказать в чем ошибка?

1 ответ

Решение

Давайте разберемся с этим:

if (!isset($_GET["cat"]) || !isset($_GET["new_field"])) {

Это означает, что если cat не задан, ИЛИ new_field не задан, тогда условие истинно.

Если вы передадите cat, но не передадите new_field, условие все равно будет выполнено. Если вы хотите, чтобы оно было ложным, вам нужно отправить ОБА кошку И new_field.

&& требует, чтобы все условия были истинными, чтобы возвращать истину, иначе он возвращает ложь.

|| требует, чтобы любое из заданных условий было истинным, чтобы вернуть истину, иначе оно возвращает ложное.

Вы можете найти полную ссылку на логические операторы PHP здесь:

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

Другие вопросы по тегам