php isset нужен ли он для проверки формы? - PullRequest
1 голос
/ 04 мая 2009

Я пытаюсь понять, требуется ли isset во время обработки формы, когда я проверяю $ _REQUEST ["input_name"], если значение не передается, он не плачет об этом и php не выдает ошибку, если вы пытаетесь чтобы получить доступ к элементу массива, который не существует .... я могу использовать if ($ _ REQUEST ["input_name"]) .. что насчет «пусто» даже в тех случаях, когда я могу использовать if ()

Thnks

Ответы [ 5 ]

6 голосов
/ 04 мая 2009

Я бы не рекомендовал использовать суперглобальный $_REQUEST для захвата ввода формы, если только вы не тестируете форму. Вместо этого используйте $_GET или $_POST, если только у вас нет веских причин.

Кроме того, isset() и array_key_exists() оба делают один и тот же трюк с ключами массива, хотя array_key_exists() более понятен в контексте массивов.

Я рекомендую использовать:

error_reporting(E_ALL); //E_ALL - All errors and warnings

в вашей среде разработки, так как это может показать, где могут быть применены передовые методы, такой отказ в объявлении переменных до их использования и т. Д.

5 голосов
/ 04 мая 2009

Существуют разные типы уровней ошибок. Проверка переменной, которая не установлена, только бросает уведомление. Ваши сообщения об ошибках , вероятно, настроены на их игнорирование. Лучше всего всегда использовать isset, когда вы хотите проверить, установлена ​​ли переменная, хотя имеет свои ошибки .

Выполнение только того, что вы делаете выше, например, если $_REQUEST["input_name"] является строкой «0», оно будет иметь значение false. Также не рекомендуется использовать $ _REQUEST для начала, поскольку на него могут влиять такие вещи, как файлы cookie и т. Д., И это обычно является запахом кода для плохой архитектуры.

4 голосов
/ 04 мая 2009

использование $ _REQUEST в значительной степени является хаком. Вы должны использовать $ _POST или $ _GET (в зависимости от того, что вы делаете), и вы должны использовать isset ().

Кажется, что каждая книга, которую я читал на PHP, говорит.

3 голосов
/ 04 мая 2009

Как правило, по крайней мере для тестирования, установите для сообщения об ошибках значение E_ALL (все ошибки и предупреждения) в файле php.ini или в коде с использованием error_reporting (E_ALL); ( Также обратите внимание на добавление E_STRICT .) Лучше сразу получить явное уведомление об ошибке, чем что-то неуловимое, что не так, как вы не заметите позже.

Избегайте использования $ _REQUEST, который является слишком расплывчатым (включает значения GET, POST и cookie), и используйте $ _POST или $ _GET, если это то, что вы действительно имеете в виду, и проверяйте с помощью isset($_POST["input_name"])

Краткий ответ: «Да». :)

2 голосов
/ 04 мая 2009
if($_REQUEST["input_name"])

выдаст уведомление (ошибку), если «input_name» не существует, поэтому рекомендуется isset ().

...