Ошибка в логическом или в условии 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 здесь: