2015-12-28 3 views
1

Почему $ _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() и расширяет время ,

+0

Это работает для меня. В деталях реализации должно быть что-то не так. Не могли бы вы отредактировать вопрос и предоставить полный автономный пример, который воспроизводит проблему? –

+0

Вы уверены, что в cookie не установлен только флаг только для http? – PeeHaa

+1

Я посмотрю и приведу вам пример. –

ответ

-3

Возможно, из-за переменной с именем 'date' в javascript?

попробовать это

  function changeLang(lang) 
      { 
       var d = new Date(); 
       d.setTime(d.getTime()+(30*24*60*60*1000)); 
       var expires = "; expires="+d.toGMTString(); 
       document.cookie = "lang="+lang+expires+"; path=/"; 
       location.reload(); 
      } 
+1

Ничего не меняет. JS-Part работает и устанавливает cookie в «EN», но когда я перезагружаю страницу $ _COOKIE ['lang'], остается «DE». –

+0

Зачем называть переменную 'date' проблемой? Насколько я знаю, это не [зарезервированное ключевое слово] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords) или встроенный объект или популярные рамки или что-то еще. –

Смежные вопросы