PHP不会检索cookie

时间:2011-04-07 23:00:10

标签: php cookies

首先,请关注这个问题,因为我刚刚开始这个。

所以我在index.php中运行了以下内容:

<?php  

    if(isset($_COOKIE['language'])) {
        if (($_COOKIE['language']) == 'en')
            print "<SCRIPT LANGUAGE=\"JavaScript\">window.location=\"URLGOESHERE\"</SCRIPT>";  
        elseif (($_COOKIE['language']) == 'fr') 
            print "<SCRIPT LANGUAGE=\"JavaScript\">window.location=\"URLGOESHERE\"</SCRIPT>";
    }
    else {
        print "<SCRIPT LANGUAGE=\"JavaScript\">window.location=\"URL-FOR-COOKIE-SETTING-PAGE\"</SCRIPT>";
    }
    ?>

“else”语句重定向转到用户设置其语言首选项的页面,一旦他们这样做,该页面就会设置一个cookie然后将它们发送到正确版本的站点。但是,当用户返回到主index.php时,它似乎无法找到cookie并跳过“else”语句。重定向过去常用于使用'header'与PHP一起使用,然后它也不起作用。我曾在其他地方读过这可能会造成一些麻烦,所以我将其切换为尝试打印Javascript。

奇怪的是,我可以在设置cookie后立即找到它,确切地说它应该是什么,正确的名称和变量都存在。我完成的就像书中告诉我的那样(据我所知)。我已经在Firefox和Safari中尝试了这一点而没有运气。

我错过了什么?

编辑:这是实际设置Cookie的脚本。该参数通过url编码从链接发送,如下所示:<a href="setlang.php?lang=en">

<?php 

$lang = urlencode($_GET["lang"]);

setcookie("language", $lang, time()+60*60*24*90, ".URL");

switch ($lang) {

case 'en':
header('Location:  URLGOESHERE');
break;

case 'fr':
header('Location:  URLGOESHERE');
break;
}

 ?>

2 个答案:

答案 0 :(得分:3)

设置它的脚本无法使用cookie。

你必须设置cookie,然后在下一页加载cookie将可用于php代码

答案 1 :(得分:0)

试试这段代码:

setcookie("language", $lang, time()+60*60*24*90, "/");

我不确定.URL应该做什么o.o