#php
#php
Вопрос:
у меня есть этот метод запроса:
if (!$_REQUEST['0']) {
echo "Address missing...";
die();
} else {
code
code etc.
}
И адрес такой: http://localhost/api.php?0 =адрес
Если я открою: api.php?0=0
я должен получить другую ошибку, в которой говорится, что адрес не исправлен. Но я получаю Address missing
… На мой взгляд, что-то не так с:
if (!$_REQUEST['0'])
Есть идеи?
Комментарии:
1. 0, null и false обрабатываются php одинаково. Итак, когда вы вводите 0 = 0, условие воспринимает его как false, поэтому вы получаете «Адрес не предоставлен».
Ответ №1:
Вы проверяете, является ли значение $_REQUEST[‘0’] ложным. В PHP (и многих других языках) 0 означает false. Поскольку 0 == false, ваше выражение приводит к ‘true’ и echo
и die()
выполняются.
Если вы пытаетесь проверить, существует ли $_REQUEST[‘0’], вам следует использовать isset() или empty()
Ответ №2:
if(!isset($_REQUEST['0']))
{
die("Address not provided");
}
else
{
// code
}
Ответ №3:
if (empty ($_REQUEST['0']))
{
echo "Address doesn't provided...";
die();
} else {
code
code etc.
Ответ №4:
if (array_key_exists('0', $_REQUEST['0']) === true) {
echo 'exists';
}
else {
echo 'does not';
}
Примечание: Лучшая проверка того, установлен ли ключ в массиве, — это array_key_exists. В отличие от isset, эта функция не возвращает false, когда значение равно NULL.
Примечание 2: Вы должны указать, какой суперглобальный файл использовать, используя $_REQUEST вместо указания $_POST или $ _GET, это может быть причиной возникновения неопределенных ошибок.