0

可能重复:
在 setcookie() 之后立即访问 $_COOKIE

所以我使用下面的代码向我的网站添加多语言功能:

if(isset($_GET['lang']) && $_GET['lang'] != ""){
setcookie("lang", $lang, time()+360*360*3600);
}elseif(!isset($_COOKIE["lang"]) || $_COOKIE["lang"] == ""){
setcookie("lang", "en", time()+360*360*3600);
}
include 'lang/'.$_COOKIE["lang"].'.php';

现在,当此代码第一次执行时,它找不到 `$_COOKIE["lang"] 并因此无法打开文件,但是当我刷新页面后,它加载得很好。我想知道我做错了什么?

4

1 回答 1

2

cookie 仅在您发出请求时设置。

这就是它的工作原理(它随每个请求一起发送)。而且由于您仍在同一个请求中,因此它根本不存在。

但是你可以自己设置:

if (isset($_GET['lang']) && $_GET['lang'] != "") {
    $_COOKIE['lang'] = $lang;
    setcookie("lang", $lang, time()+360*360*3600);
} elseif ...

这也许就是您正在寻找的解决方法。

于 2012-06-02T21:36:22.067 回答