Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.05.2018, 13:41
Интересующийся
Отправить личное сообщение для denka977 Посмотреть профиль Найти все сообщения от denka977
 
Регистрация: 30.01.2016
Сообщений: 23

Перестает работать от элементарного переименования значений
Здравствуйте.

Собственно, есть код, который обращается в куки браузера и при их отсутствии выдает заготовленный текст в виде html чрез вызов другой функции.

<?
// Читаем куку языка
$lang = $_COOKIE['lang'];
if (!$lang) {
// Если куки нет, ставим дефолтную
$lang = 'ru';
}
?>

Вывод:
<?= $lang; ?>


Но, если просто заменить слово "lang" на "scheme" (или любое другое), то код уже не работает.

<?
// Читаем куку языка
$scheme = $_COOKIE['scheme'];
if (!$scheme) {
// Если куки нет, ставим дефолтную
$scheme = 'ru';
}
?>

Вывод:
<?= $scheme; ?>


В чем может быть причина?
Ответить с цитированием
  #2 (permalink)  
Старый 10.05.2018, 13:45
Аватар для Aetae
Любитель
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 5,037

Всё работает.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 10.05.2018, 13:52
Интересующийся
Отправить личное сообщение для denka977 Посмотреть профиль Найти все сообщения от denka977
 
Регистрация: 30.01.2016
Сообщений: 23

Сообщение от Aetae Посмотреть сообщение
Всё работает.
Тогда парадокс выходит, ибо как только я через "Поиск и замену" в notepad++ заменяю lang на schema, код на сайте уже не работает. А заменяю обратно - работает.
Ответить с цитированием
  #4 (permalink)  
Старый 10.05.2018, 13:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 8,831

А F5 после "сразу замены" не пробовали?
Ответить с цитированием
  #5 (permalink)  
Старый 10.05.2018, 14:00
Интересующийся
Отправить личное сообщение для denka977 Посмотреть профиль Найти все сообщения от denka977
 
Регистрация: 30.01.2016
Сообщений: 23

Сообщение от laimas Посмотреть сообщение
А F5 после "сразу замены" не пробовали?
Все пробовал.
Оба кода были по отдельности записаны в разные php файлы, которые я вызывал уже в шаблоне (один перед <!DOCTYPE html>, а второй в нужном месте шаблона).
Как только эти оба кода я записал в 1 php файл и сделал вызов непосредственно в месте, где нужно выводить значение из куки - все заработало.

Истинных причин, как влияла замена lang на scheme на работоспособность так и не понял.
Ответить с цитированием
  #6 (permalink)  
Старый 10.05.2018, 14:03
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 1,897

Notice в случае отсутствия нужной куки не смущает?
$lang = isset($_COOKIE['lang'])?$_COOKIE['lang']:'ru';


Это не причина неработоспособности скрипта, однако если вы не видите notice, значит у вас вывод ошибок отключен.
Во время разработки включите вывод ошибок, либо смотрите лог ошибок сервера, все должно стать понятно.
Ответить с цитированием
  #7 (permalink)  
Старый 10.05.2018, 14:05
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 8,831

Здесь нет ошибок и будет работать. Единственная проблема, которая может возникнуть, это в равенство имен переменных $scheme и $_COOKIE['scheme'], в какой это версии я уже не помню.

Куки серверу доступны только после следующего входа на страницу, сразу установить и тут же запросить не получится.

Это все, так что чудес быть не должно.
Ответить с цитированием
  #8 (permalink)  
Старый 10.05.2018, 14:08
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 8,831

Сообщение от Nexus
Это не причина неработоспособности скрипта, однако если вы не видите notice, значит у вас вывод ошибок отключен.
Тут единственное предупреждение будет, что переменная не определена. При выключенных предупреждениях $_COOKIE['scheme'] будет равна NULL (она в общем то в любом случае NULL), и значит просто так:

$scheme = $_COOKIE['scheme'] ?: 'ru';
Ответить с цитированием
  #9 (permalink)  
Старый 10.05.2018, 14:19
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 1,897

Сообщение от laimas
Тут единственное предупреждение будет, что переменная не определена.
От кода зависит.
Ваш код также порождает notice, который как минимум в лог ошибок да запишется.
Если его игнорировать, то нет смысла изменять код тс вообще.
Ответить с цитированием
  #10 (permalink)  
Старый 10.05.2018, 14:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 8,831

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

На локальном в режиме отладки нужно анализировать предупреждения, а после просто забить на них большой...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перестает работать обращение к идентификаотру ghosttim Элементы интерфейса 2 15.09.2016 15:49
Почему слайдер перестает работать? oleg.d Общие вопросы Javascript 2 05.05.2015 20:35
Перестает работать функция проверки выбора checkboks sanyomix Элементы интерфейса 2 12.06.2013 22:50
Перестает работать кнопка submit в форме, в Chrome MCB Javascript под браузер 1 21.04.2012 21:16
.append() и перестает работать обработчик wc3banderlog jQuery 2 30.01.2011 17:54