Php setcookie SOMETIMES不起作用

时间:2014-08-20 10:23:21

标签: php cookies

我正在使用cookie记住访问者选择的语言。 这是我的lang.php页面的开头。

<?php
$time=microtime();
if (isset($_GET['lg']) AND ($_GET['lg'] != NULL)) {
    if ($_GET['lg'] == 'fr') {
        setcookie("userlang", "fr", time()*60*60*24*30);
        header("location: index.php");
    }
    elseif ($_GET['lg'] == 'en') {
        setcookie("userlang", "en", time()*60*60*24*30);
        header("location: index.php");
    }
    else {
        header("location: lang.php");
    }
}
else {
    if (isset($_COOKIE['userlang'])) {
        unset($_COOKIE['userlang']);
        setcookie("userlang", '', time()-3600);
    }
}
?>

它是页面顶部,肯定没有。 有时它可以工作,有时它只是重新加载页面,好像没有设置cookie ...我可以点击我选择多次的语言标志..相同... 然后我停下来,等待几分钟,当我选择一种语言时,突然它起作用.... 请帮我! =)

任何想法都可能来自leet编码器?

提前感谢。

3 个答案:

答案 0 :(得分:2)

设置cookie:

setcookie("myCookie", "cookie_data", time()+3600);

在您错过的代码中+随着时间的推移而签名。 它应该是

setcookie("userlang", "fr", time()+60*60*24*30);

答案 1 :(得分:0)

setcookie("userlang", "fr", time()+60*60*24*30);

不是setcookie("userlang", "fr", time()*60*60*24*30);

答案 2 :(得分:0)

我遇到了同样的问题......我找到了解决方案:域名与www和没有www创建不同的cookie。因此,如果用户在没有www的域中创建cookie,经过一段时间尝试更改它,但在带有www的域中它不会更改。它需要cookie巫婆是在域名中创建的,没有www。