Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2016, 15:27   #1
Sanscrit
Пользователь
 
Регистрация: 23.03.2015
Сообщений: 24
Радость PHP Вопрос по функции isset()

Всех приветствую, возник такой вопрос: нужно ли использовать функцию isset() в условиях? Например условие:
Код:
if(isset($_POST['submit']))
{
}
Прекрасно работает и без этой функции:
Код:
if($_POST['submit'])
{
}
Поскольку если элемента 'submit' в массиве $_POST не будет обнаружен, то вернется пустая строка, т. е. false, а если он есть, то вернется этот элемент, что будет интерпретироваться как true.
Ну или я что-то неправильно понимаю.

Последний раз редактировалось Sanscrit; 17.03.2016 в 15:36.
Sanscrit вне форума Ответить с цитированием
Старый 17.03.2016, 15:37   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я, конечно, ещё тот "специалист" в PHP
но, по моему, Вы ошибаетесь.

проверить очень легко.
просто измените этот текст, на, например, такой:
Код:
if($_POST['bubmit'])
думаю, что Вы получите ошибку "Undefined index bubmit"

p.s. возможно, что такие ошибки можно подавить через @
Код:
if(@$_POST['bubmit'])
но можно и isset использовать.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.03.2016, 15:45   #3
Sanscrit
Пользователь
 
Регистрация: 23.03.2015
Сообщений: 24
По умолчанию

Проверил - никаких ошибок
Sanscrit вне форума Ответить с цитированием
Старый 17.03.2016, 16:00   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Sanscrit Посмотреть сообщение
Проверил - никаких ошибок
А вывод ошибок включен?
Andkorol вне форума Ответить с цитированием
Старый 17.03.2016, 16:15   #5
Sanscrit
Пользователь
 
Регистрация: 23.03.2015
Сообщений: 24
По умолчанию

Действительно, дело было в этом, спасибо!
Sanscrit вне форума Ответить с цитированием
Старый 17.03.2016, 16:20   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,572
По умолчанию

Во-первых, нельзя.
Во-вторых, $_POST['submit'] может быть пустой строкой или нулем.
Arigato вне форума Ответить с цитированием
Старый 17.03.2016, 21:30   #7
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Sanscrit
Цитата:
Сообщение от Arigato Посмотреть сообщение
Во-первых, нельзя.
Во-вторых, $_POST['submit'] может быть пустой строкой или нулем.
В дополнение к этому скажу, что оно также может быть false, к которому пустые строки и нуль преобразуются. В итоге у вас не выполнится условие, когда оно выполниться должно.

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение

проверить очень легко.
просто измените этот текст, на, например, такой:
Код:
if($_POST['bubmit'])
думаю, что Вы получите ошибку "Undefined index bubmit"
Сергей, мой опыт показывает, что ошибок не будет - просто ничего не будет выведено
Вадим Мошев вне форума Ответить с цитированием
Старый 17.03.2016, 22:48   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
мой опыт показывает, что ошибок не будет - просто ничего не будет выведено
PHP код:
php -a
Interactive shell

php 
> if($_POST['bubmit']){ echo 42; }
PHP Notice:  Undefined indexbubmit in php shell code on line 1
PHP Stack trace
:
PHP   1. {main}() php shell code:0

Notice
Undefined indexbubmit in php shell code on line 1

Call Stack
:
   
35.8794     221544   1. {main}() php shell code:0

php 

Ничего не будет выведено – если вывод ошибок отключен.
Иначе получаем Notice.
Andkorol вне форума Ответить с цитированием
Старый 20.03.2016, 07:26   #9
Sanscrit
Пользователь
 
Регистрация: 23.03.2015
Сообщений: 24
По умолчанию

Все правильно, был отключен вывод ошибок, это и ввело меня в заблуждение.
Sanscrit вне форума Ответить с цитированием
Старый 20.03.2016, 10:22   #10
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Подавлять ошибки с помощью @ это дурной тон. isset, empty обязательно нужно использовать в условиях, иначе будут нотисы. Они для этого и предназначены. Слышал такое объяснение для этих функций. isset - можно проверить, существует ли карман, empty - пусто ли в кармане.
Gorychev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
isset($_GET) alt5000 PHP 1 01.12.2011 14:41
Вопрос по функции Seferus Помощь студентам 0 05.10.2010 20:29
Вопрос по функции. ImmortalAlexSan Общие вопросы Delphi 2 08.03.2010 20:16
Си. Вопрос по функции forsaken66 Помощь студентам 6 06.10.2009 23:53
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33