10.05.2018, 13:41
|
Интересующийся
|
|
Регистрация: 30.01.2016
Сообщений: 23
|
|
Перестает работать от элементарного переименования значений
Здравствуйте.
Собственно, есть код, который обращается в куки браузера и при их отсутствии выдает заготовленный текст в виде html чрез вызов другой функции.
<?
// Читаем куку языка
$lang = $_COOKIE['lang'];
if (!$lang) {
// Если куки нет, ставим дефолтную
$lang = 'ru';
}
?>
Вывод:
<?= $lang; ?>
Но, если просто заменить слово "lang" на "scheme" (или любое другое), то код уже не работает.
<?
// Читаем куку языка
$scheme = $_COOKIE['scheme'];
if (!$scheme) {
// Если куки нет, ставим дефолтную
$scheme = 'ru';
}
?>
Вывод:
<?= $scheme; ?>
В чем может быть причина?
|
|
10.05.2018, 13:45
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,577
|
|
__________________
29375, 35
|
|
10.05.2018, 13:52
|
Интересующийся
|
|
Регистрация: 30.01.2016
Сообщений: 23
|
|
Тогда парадокс выходит, ибо как только я через "Поиск и замену" в notepad++ заменяю lang на schema, код на сайте уже не работает. А заменяю обратно - работает.
|
|
10.05.2018, 13:56
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
А F5 после "сразу замены" не пробовали?
|
|
10.05.2018, 14:00
|
Интересующийся
|
|
Регистрация: 30.01.2016
Сообщений: 23
|
|
Сообщение от laimas
|
А F5 после "сразу замены" не пробовали?
|
Все пробовал.
Оба кода были по отдельности записаны в разные php файлы, которые я вызывал уже в шаблоне (один перед <!DOCTYPE html>, а второй в нужном месте шаблона).
Как только эти оба кода я записал в 1 php файл и сделал вызов непосредственно в месте, где нужно выводить значение из куки - все заработало.
Истинных причин, как влияла замена lang на scheme на работоспособность так и не понял.
|
|
10.05.2018, 14:03
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Notice в случае отсутствия нужной куки не смущает?
$lang = isset($_COOKIE['lang'])?$_COOKIE['lang']:'ru';
Это не причина неработоспособности скрипта, однако если вы не видите notice, значит у вас вывод ошибок отключен.
Во время разработки включите вывод ошибок, либо смотрите лог ошибок сервера, все должно стать понятно.
|
|
10.05.2018, 14:05
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Здесь нет ошибок и будет работать. Единственная проблема, которая может возникнуть, это в равенство имен переменных $scheme и $_COOKIE['scheme'], в какой это версии я уже не помню.
Куки серверу доступны только после следующего входа на страницу, сразу установить и тут же запросить не получится.
Это все, так что чудес быть не должно.
|
|
10.05.2018, 14:08
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Nexus
|
Это не причина неработоспособности скрипта, однако если вы не видите notice, значит у вас вывод ошибок отключен.
|
Тут единственное предупреждение будет, что переменная не определена. При выключенных предупреждениях $_COOKIE['scheme'] будет равна NULL (она в общем то в любом случае NULL), и значит просто так:
$scheme = $_COOKIE['scheme'] ?: 'ru';
|
|
10.05.2018, 14:19
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Сообщение от laimas
|
Тут единственное предупреждение будет, что переменная не определена.
|
От кода зависит.
Ваш код также порождает notice, который как минимум в лог ошибок да запишется.
Если его игнорировать, то нет смысла изменять код тс вообще.
|
|
10.05.2018, 14:23
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Nexus
|
Ваш код также порождает notice, который как минимум в лог ошибок да запишется.
Если его игнорировать, то нет смысла изменять код тс вообще.
|
Естественно порождает и хрен с ним. Я отключаю вывод предупреждений, что и должно быть на удаленном сервере. Несмотря на то, что даже есть предупреждения, код будет работать.
На локальном в режиме отладки нужно анализировать предупреждения, а после просто забить на них большой...
|
|
|
|