Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Перестает работать от элементарного переименования значений (https://javascript.ru/forum/server/73727-perestaet-rabotat-ot-ehlementarnogo-pereimenovaniya-znachenijj.html)

denka977 10.05.2018 13:41

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

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

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

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


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

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

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


В чем может быть причина?

Aetae 10.05.2018 13:45

Всё работает.

denka977 10.05.2018 13:52

Цитата:

Сообщение от Aetae (Сообщение 484979)

Тогда парадокс выходит, ибо как только я через "Поиск и замену" в notepad++ заменяю lang на schema, код на сайте уже не работает. А заменяю обратно - работает.

laimas 10.05.2018 13:56

А F5 после "сразу замены" не пробовали?

denka977 10.05.2018 14:00

Цитата:

Сообщение от laimas (Сообщение 484982)
А F5 после "сразу замены" не пробовали?

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

Истинных причин, как влияла замена lang на scheme на работоспособность так и не понял.

Nexus 10.05.2018 14:03

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


Это не причина неработоспособности скрипта, однако если вы не видите notice, значит у вас вывод ошибок отключен.
Во время разработки включите вывод ошибок, либо смотрите лог ошибок сервера, все должно стать понятно.

laimas 10.05.2018 14:05

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

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

Это все, так что чудес быть не должно.

laimas 10.05.2018 14:08

Цитата:

Сообщение от Nexus
Это не причина неработоспособности скрипта, однако если вы не видите notice, значит у вас вывод ошибок отключен.

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

$scheme = $_COOKIE['scheme'] ?: 'ru';

Nexus 10.05.2018 14:19

Цитата:

Сообщение от laimas
Тут единственное предупреждение будет, что переменная не определена.

От кода зависит.
Ваш код также порождает notice, который как минимум в лог ошибок да запишется.
Если его игнорировать, то нет смысла изменять код тс вообще.

laimas 10.05.2018 14:23

Цитата:

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

Естественно порождает и хрен с ним. Я отключаю вывод предупреждений, что и должно быть на удаленном сервере. Несмотря на то, что даже есть предупреждения, код будет работать.

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


Часовой пояс GMT +3, время: 21:57.