【问题标题】:Receiving error after setting a cookie and calling it [duplicate]设置cookie并调用它后收到错误[重复]
【发布时间】:2012-06-07 15:05:23
【问题描述】:

可能重复:
Accessing $_COOKIE immediately after setcookie()

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

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"],因此无法打开文件,但是当我刷新页面后,它加载得很好。 我想知道我做错了什么?

【问题讨论】:

  • 考虑在将$_COOKIE["lang"] 放入include 语句之前对它进行一些验证以避免path traversal attack
  • @Phoenix +1,感谢您的提示

标签: php cookies multilingual


【解决方案1】:

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

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

但你可以自己设置:

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

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

【讨论】:

    猜你喜欢
    • 2016-12-30
    • 2015-02-27
    • 2012-03-26
    • 2017-12-17
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 2021-01-30
    • 2014-01-03
    相关资源
    最近更新 更多