Почему $ _COOKIE ['lang'] не изменяется при редактировании файла cookie с javascript и перезагрузке страницы?
У меня есть сайт, на котором вы можете выбрать свой язык. Если вы впервые входите на сайт, $ _COOKIE ['lang'] будет установлен в «DE». В противном случае он будет расширен.
function setLangCookie()
{
if(!isset($_COOKIE["lang"]))
{
setcookie("lang","DE",time() + (86400 * 30), "/");
}
else
{
setcookie("lang",$_COOKIE["lang"],time() + (86400 * 30), "/");
}
}
Cookie on entering the first time
После изменения языка на де 'EN', печенье будет изменен с помощью JavaScript.
function changeLang(lang)
{
var date = new Date();
date.setTime(date.getTime()+(30*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
document.cookie = "lang="+lang+expires+"; path=/";
location.reload();
}
After editing with JS
Это работает, но когда я смотрю на $ _COOKIE [ 'язык'], то есть 'DE', как содержание. Вместо этого у document.cookie есть lang = 'EN'.
Я также тестировал его на других браузерах, тот же результат.
Я использую Chrome 47.0.2526.106.
Edit: Реализация
<?php
error_reporting(-1);
session_start();
include('PHP_inc/functions.php');
setLangCookie();
?>
<select class="LangSelector" onchange="changeLang(value)">
<option selected disabled>Language</option>
<option value="DE">DE</option>
<option value="EN">EN</option>
</select>
И теперь, потому что $ _COOKIE [ 'языки'] всегда 'DE', это изменит его от 'EN' к 'DE' в setLangCookie() и расширяет время ,
Это работает для меня. В деталях реализации должно быть что-то не так. Не могли бы вы отредактировать вопрос и предоставить полный автономный пример, который воспроизводит проблему? –
Вы уверены, что в cookie не установлен только флаг только для http? – PeeHaa
Я посмотрю и приведу вам пример. –