Недавно я начал заниматься php и сделал этот код для изменения языка с помощью cookie. Он отлично работает на локальном хосте, но когда я загружаю его, браузер, похоже, не сохраняет файлы cookie.
Итак, я попытался установить домен как для локального хоста, так и для сервера, но он все еще не работает.
$whitelist = array(
'127.0.0.1',
'::1'
);
if (in_array($_SERVER['REMOTE_ADDR'], $whitelist)){
$domain = '.localhost';
} else {
$domain = '.bjarnesc.de';
}
if (isset($_GET['lang'])) {
$lang = $_GET['lang'];
setcookie('lang', $lang, (time()+(86400*30)), "/", $domain);
$_COOKIE['lang'] = $lang;
}
else if (!isset($_COOKIE['lang'])) {
setcookie('lang', 'de', (time()+(86400*30)), "/", $domain);
$_COOKIE['lang'] = 'de';
}
if ($_COOKIE['lang'] == 'en') {
include("../languages/en.php");
} else if ($_COOKIE['lang'] == 'de') {
include("../languages/de.php");
}
@Karkouch - это требование спецификации, но игнорируется в основном браузерами, которые делают всю работу
Просто догадываюсь, но, может быть, у вас есть PHP, настроенный на автоматический запуск сеансов локально, и это не относится к вашей среде prod?
Несмотря на то, что я просмотрел много-много сообщений, я только сейчас нашел четкое объяснение, что cookie всегда должен быть установлен в самом начале файла, поэтому теперь он работает. В любом случае спасибо за ответ :)






Скорее всего, проблема в том, что заголовки уже отправлены из-за пробелов во включенных файлах или в самом файле. Либо исправьте это, либо установите cookie вначале.
Почему есть точка? перед доменным именем
.bjarnesc.de?