Использование isset ($ _ REQUEST [«p»]) или $ _REQUEST [«p»]

Вопрос: Когда-то я был на стажировке, и я работал младшим веб-разработчиком. Во время работы и обучения я заметил, что при смене страниц вместо использования isset($_POST/GET/REQUEST["var"]) они просто использовали $_POST/GET/REQUEST["var"]. Итак, позже я пришел домой и попробовал то же самое. Что происходит? Каждый раз я сталкиваюсь с if() чтобы убедиться, что я должен использовать isset(), а

Вопрос:

Когда-то я был на стажировке, и я работал младшим веб-разработчиком. Во время работы и обучения я заметил, что при смене страниц вместо использования isset($_POST/GET/REQUEST[«var»]) они просто использовали $_POST/GET/REQUEST[«var»].

Итак, позже я пришел домой и попробовал то же самое. Что происходит? Каждый раз я сталкиваюсь с if() чтобы убедиться, что я должен использовать isset(), а другой – это ошибка. Но заметьте одно, мой url это:

?p=sub_artigo&id=2

Итак, когда я выполняю условие if():

if(isset($_REQUEST[«p»])==»procurar» && $_REQUEST[‘cont’]){

Он не показывает ошибок, но если я беру isset(), он дает обычную ошибку, которую я вижу на форумах и здесь.

Поэтому мой вопрос: почему не отображается ошибка для второй переменной?

Примечание: p-> string; id-> int

Лучший ответ:

У них error_reporting отклонено, что приятно, потому что это означает, что вы можете делать что-то вроде

if ($_POST[‘whatever’]) { … }

вместо

if (isset($_POST[‘whatever’])) { … }

но это также мешает вам видеть другие, возможно, улокальные ошибки.

этот параметр находится в файле php.ini в переменной error_reporting.

Более подробную информацию о файле ini можно найти здесь: http://php.net/manual/en/ini.php

Кроме того, isset($_REQUEST[«p»])==»procurar» то время как sytactically correct, никогда не вернет true, потому что isset() возвращает логическое значение.

то, что вы хотите, isset($_REQUEST[‘p’]) && $_REQUEST[‘p’] == ‘procurar’

Ответ №1

RTM: http://php.net/isset

isset() возвращает логическое значение TRUE/FALSE. Он НИКОГДА не вернет строку, поэтому это утверждение

if(isset($_REQUEST[«p»])==»procurar» && $_REQUEST[‘cont’]){

никогда НИКОГДА не получится, потому что isset() никогда не будет равняться procurar, поэтому проверка [‘cont’] никогда не будет оценена.

Ответ №2

Когда первый оператор является ложным, PHP не беспокоит остальную часть оператора if.

Я всегда использую следующую проверку для каждого ключа $ _REQUEST, $ _POST или $ _GET:

function ifSet($key) { return (isset($_REQUEST[$key]) && $_REQUEST[$key])?$_REQUEST[$key]:»; }

Это никогда не даст вам никаких предупреждений, даже если error_reporting установлен на E_ALL.

“Исеть” проверяет, установлен ли ключ $, и после этого он проверяет, имеет ли значение $ ключ.

Оцените статью
Добавить комментарий