Форум об интернет-маркетинге
Вернуться   Форум об интернет-маркетинге > Технические вопросы > Веб-строительство

Ответ
 
Опции темы
Старый 10.10.2022, 18:01   #1
seokotov
se ксенофоб
Доцент
 
Аватар для seokotov
 
Регистрация: 14.07.2020
Адрес: Севастополь, Россия
Сообщений: 173
Сказал(а) спасибо: 127
Получил(а) "Спасибо": 33
Нарушения: 0/0 (0)
Репутация: 28076

Thread Starter что за прикол ошибка php?

PHP код:
if($_GET['types']) { $filterz[] = 'types='.$_GET['types']; } 
che.php : 7) PHP warning: Undefined array key "types"

на другом сайте работет этот же код а тут выкидоны, даже версии php
7.4.28 где работает
7.4.32 неработает
seokotov вне форума   Ответить с цитированием
Старый 10.10.2022, 21:29   #2
Reborn S.E.
Администратор
Доцент
 
Аватар для Reborn S.E.
 
Регистрация: 14.06.2020
Сообщений: 197
Сказал(а) спасибо: 320
Получил(а) "Спасибо": 3,596
Нарушения: 0/0 (0)
Репутация: 544157

По умолчанию Re: что за прикол ошибка php?

ну вон пишет: не задан массив types
Добро пожаловать на SE.GURU
Reborn S.E. вне форума   Ответить с цитированием
Старый 10.10.2022, 21:39   #3
XPraptor
Думаю, что надо худеть
Академик
 
Аватар для XPraptor
 
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 541251

По умолчанию Re: что за прикол ошибка php?

seokotov, В последних версиях переходят к полутипизации, ты не можешь оперировать в одной конструкции несуществующими переменными.
Если у тя не будет types то тут же ты не можешь обратиться в строке к GET[types] так как переменная парсится сразу, значиние по умолчанию уже отсутствует, а будет ошибка уровня e-варнинг.

Ты должен проверить есть она или нет:
Код:
if(isset($_GET['types'])){$filterz[] = 'types=' . $_GET['types'];}
Там еще несколько таких камней есть подводных.
Состояние бота google и полезные ресурсы: всё про гугл
XPraptor вне форума   Ответить с цитированием
Сказали спасибо:
Старый 11.10.2022, 04:55   #4
saanvi
Senior Member
Доцент
 
Аватар для saanvi
 
Регистрация: 17.07.2020
Сообщений: 238
Сказал(а) спасибо: 578
Получил(а) "Спасибо": 603
Нарушения: 0/0 (0)
Репутация: 1048001

По умолчанию Re: что за прикол ошибка php?

Цитата:
if(isset($_GET['types']))
Можно ещё так:
Цитата:
if(@$_GET['types'])
Но я когда экспериментировал, кажется, этот вариант медленнее работает, если много переменных за раз надо проверить (в цикле, например). Хотя если один раз - то пофиг, и элегантнее.
saanvi вне форума   Ответить с цитированием
Старый 11.10.2022, 09:06   #5
XPraptor
Думаю, что надо худеть
Академик
 
Аватар для XPraptor
 
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 541251

По умолчанию Re: что за прикол ошибка php?

saanvi, ты просто подавляешь вывод ошибки @, никогда так не делай, сама ошибочная конструкция и обработчики которые при этом вызываются никуда не деваются на сервере, можно вообще в ступор сервак отправить так
XPraptor вне форума   Ответить с цитированием
Старый 11.10.2022, 10:35   #6
saanvi
Senior Member
Доцент
 
Аватар для saanvi
 
Регистрация: 17.07.2020
Сообщений: 238
Сказал(а) спасибо: 578
Получил(а) "Спасибо": 603
Нарушения: 0/0 (0)
Репутация: 1048001

По умолчанию Re: что за прикол ошибка php?

Цитата:
Сообщение от XPraptor Посмотреть сообщение
saanvi, ты просто подавляешь вывод ошибки @, никогда так не делай, сама ошибочная конструкция и обработчики которые при этом вызываются никуда не деваются на сервере, можно вообще в ступор сервак отправить так
Очевидно, что в данном случае просто проверяется, есть ли GET-параметры вообще. И если их нет - то и пофигу. У меня в коде 100500 таких приёмов и все сайты прекрасно работают.
saanvi вне форума   Ответить с цитированием
Старый 11.10.2022, 13:29   #7
Неуч
Senior Member
Доцент
 
Регистрация: 24.05.2021
Сообщений: 220
Сказал(а) спасибо: 1,056
Получил(а) "Спасибо": 660
Нарушения: 0/0 (0)
Репутация: 991872

По умолчанию Re: что за прикол ошибка php?

Цитата:
Сообщение от saanvi Посмотреть сообщение
Очевидно, что в данном случае просто проверяется, есть ли GET-параметры вообще. И если их нет - то и пофигу. У меня в коде 100500 таких приёмов и все сайты прекрасно работают.
Ходили слухи, что игнор ошибок может привести к утечке памяти и загрузки проца... Лучше все таки так не делать, никогда не знаешь, откуда вылезет подводный камень.

В качестве еще одного метода реализации:
https://www.php.net/manual/ru/language.exceptions.php
Неуч вне форума   Ответить с цитированием
Сказали спасибо:
Старый 11.10.2022, 13:32   #8
saanvi
Senior Member
Доцент
 
Аватар для saanvi
 
Регистрация: 17.07.2020
Сообщений: 238
Сказал(а) спасибо: 578
Получил(а) "Спасибо": 603
Нарушения: 0/0 (0)
Репутация: 1048001

По умолчанию Re: что за прикол ошибка php?

Цитата:
Сообщение от Неуч Посмотреть сообщение
Ходили слухи, что игнор ошибок
Тут не игнор, просто проверка несуществующей переменной коротким способом.
saanvi вне форума   Ответить с цитированием
Старый 11.10.2022, 13:43   #9
Неуч
Senior Member
Доцент
 
Регистрация: 24.05.2021
Сообщений: 220
Сказал(а) спасибо: 1,056
Получил(а) "Спасибо": 660
Нарушения: 0/0 (0)
Репутация: 991872

По умолчанию Re: что за прикол ошибка php?

Цитата:
Сообщение от saanvi Посмотреть сообщение
Тут не игнор, просто проверка несуществующей переменной коротким способом.
https://www.php.net/manual/ru/langua...rorcontrol.php

Кстати, там есть сравнение скорости работы
Неуч вне форума   Ответить с цитированием
Старый 11.10.2022, 16:32   #10
seokotov
se ксенофоб
Доцент
 
Аватар для seokotov
 
Регистрация: 14.07.2020
Адрес: Севастополь, Россия
Сообщений: 173
Сказал(а) спасибо: 127
Получил(а) "Спасибо": 33
Нарушения: 0/0 (0)
Репутация: 28076

Thread Starter Re: что за прикол ошибка php?

Цитата:
Сообщение от XPraptor Посмотреть сообщение
seokotov, В последних версиях переходят к полутипизации, ты не можешь оперировать в одной конструкции несуществующими переменными.
Если у тя не будет types то тут же ты не можешь обратиться в строке к GET[types] так как переменная парсится сразу, значиние по умолчанию уже отсутствует, а будет ошибка уровня e-варнинг.

Ты должен проверить есть она или нет:
Код:
if(isset($_GET['types'])){$filterz[] = 'types=' . $_GET['types'];}
Там еще несколько таких камней есть подводных.
Код:
[2022-10-11 13:31:36] (ERROR @ /home/host1834153/maltipuhome.ru/htdocs/www/core/cache/includes/elements/modsnippet/37.include.cache.php : 28) Array
(
    [0] => types=1
)

[2022-10-11 13:31:38] (ERROR @ /home/host1834153/maltipuhome.ru/htdocs/www/core/cache/includes/elements/modsnippet/37.include.cache.php : 28) Array
(
    [0] => types=1
    [1] => config=1
)

[2022-10-11 13:31:39] (ERROR @ /home/host1834153/maltipuhome.ru/htdocs/www/core/cache/includes/elements/modsnippet/37.include.cache.php : 28) Array
(
    [0] => types=1
    [1] => config=1
    [2] => style=1
)

[2022-10-11 13:31:40] (ERROR @ /home/host1834153/maltipuhome.ru/htdocs/www/core/cache/includes/elements/modsnippet/37.include.cache.php : 28) Array
(
    [0] => types=1
    [1] => config=1
    [2] => style=1
    [3] => fasad=1
)
seokotov вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в Гугл Отсутствует поле url rty9000 Гугл и другие поисковики 44 11.01.2021 21:26
Ошибка почтового домена Geers Курилка 7 10.11.2020 02:54
Ошибка - MySQL query error [1615]: Prepared statement needs to be re-prepared sanek1991 Хостинг и домены 19 29.07.2020 19:24
Ошибка установки соединения с базой данных Юрий Петрович Веб-строительство 8 06.07.2020 21:22


Текущее время: 01:57. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc. Перевод: zCarot