当我使用javascript编辑cookie并重新加载页面时,为什么$ _COOKIE ['lang']不会改变?
我有一个网站,您可以选择您的语言。如果您是第一次进入该网站,$ _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
将de语言更改为“EN”后,将使用javascript更改cookie。
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 ['lang']时,它的内容是'DE'。 Document.cookie改为lang ='EN'
我也在其他浏览器上测试过,结果相同。
我使用的是Chrome 47.0.2526.106。
编辑: 实施
<?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 ['lang']总是'DE',它会在setLangCookie()中将它从'EN'改为'DE'并扩展时间。
答案 0 :(得分:-3)
可能是由于javascript中名为'date'的变量?
试试这个
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();
}