Как правильнее бороться с Notice: Undefined index

12
S
На сайте с 06.08.2008
Offline
130
2141

Исходник с нотисом:

if($_GET['pid'] && !$_COOKIE['pid'])

Гугля рекомендует 2 варианта:

1. isset (определяет, установлена ли переменная)

2. @ (собака перед функцией - подавление вывода ошибок)

Как будет сделать правильнее:

1. if(@$_GET['pid'] && !$_COOKIE['pid'])
2. if(isset($_GET['pid']) && !$_COOKIE['pid'])
3. if(isset($_GET['pid']) && $_GET['pid'] && !$_COOKIE['pid'])

Все эти варианты убирают ошибку. Так что лучше?

dkameleon
На сайте с 09.12.2005
Offline
386
#1
spiderbuber:
Как будет сделать правильнее:

вообще у вас логика разная.

если $_GET['pid'] = false

то №2 и №3 будут работать по-разному

Дизайн интерьера (http://balabukha.com/)
forest25
На сайте с 12.09.2009
Offline
67
#2

Явно не вариант с @. Нужно не подавлять вывод ошибок, а исправлять их. Достаточно будет проверки на существование обоих переменных.

VPS 512MB 20GB SSD KVM - 5$ (http://u.hmdw.me/digitalocean) | ИМХО о хостингах (http://u.hmdw.me/hosting)
siv1987
На сайте с 02.04.2009
Offline
427
#3

.hatccess

php_value error_reporting 6135

S
На сайте с 06.08.2008
Offline
130
#4

Тогда так?

if(isset($_GET['pid']) && isset($_COOKIE['pid']) && $_GET['pid'] && !$_COOKIE['pid'])

или можно так?

if(isset($_GET['pid']) && isset($_COOKIE['pid']))



---------- Добавлено 03.07.2012 в 16:51 ----------

Где вы пхп-гуру? Дайте добрый совет!

siv1987
На сайте с 02.04.2009
Offline
427
#5

spiderbuber, пишите как хотите. Просто отключите вывод (логирование) нотисов. Главное логику составляйте правильно, и применяйте комбинации в зависимости от того, что вам нужно получить.

или можно так?

isset и empty

S
На сайте с 06.08.2008
Offline
130
#6

Мне не нужно отключать логирование!

Так будет правильно писать?

if(isset($_GET['pid']) && isset($_COOKIE['pid']))
LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#7

ТС, когда программируете то включайте все ошибки, чтобы делать отладку процесса. В продакшене, отключаются ВСЕ ошибки. Ни заказчик, ни пользователи сайта не должны видеть ошибок, даже критичных.

Если они появляются смотреть логи, если что.

Так же это обезопасит от всяких хакеров, которые изучают движок.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
siv1987
На сайте с 02.04.2009
Offline
427
#8
spiderbuber:
Мне не нужно отключать логирование!

spiderbuber, логи бывают разные, белые, черные, красные... http://php.net/manual/ru/function.error-reporting.php Ну и как выше правильно советуют, плохой тон использовать показ ошибок на продакшине.

EZ
На сайте с 02.07.2012
Offline
0
#9

spiderbuber,

if ( isset($_GET['pid'], $_COOKIE['pid']) ) {

}

siv1987
На сайте с 02.04.2009
Offline
427
#10
spiderbuber:
Так будет правильно писать?
Цитата: if(isset($_GET['pid']) && isset($_COOKIE['pid']))

isset и empty, еще раз читаем описание этих двух функции. И вобще на офф сайте можно задержатся подольше.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий