$ _COOKIE不会改变

时间:2015-12-28 14:58:17

标签: javascript php cookies

当我使用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'并扩展时间。

1 个答案:

答案 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();
            }