首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新加载后php cookie无法工作

重新加载后php cookie无法工作
EN

Stack Overflow用户
提问于 2013-10-23 11:56:53
回答 1查看 893关注 0票数 0

我现在正在编写语言脚本,并使用cookie:

代码语言:javascript
复制
setcookie("lang", "nl", time() + (24 * 60 * 60));
if(isset($_GET['lang'])) {
    $_COOKIE['lang'] = $_GET['lang'];
}

如果我去mysite/?lang=en,网站将是英语,但当我去mysite/是回到主要语言(荷兰语)。cookie已经设置好了,我可以在Google中看到信息,但它不起作用。

Print_r(mysite/) ( set语言之前)

代码语言:javascript
复制
Array ( [lang] => nl ) 

Print_r(mysite/?lang=en) (设置新语言)

代码语言:javascript
复制
Array ( [lang] => en )

Print_r(mysite/) (删除?lang=en后)

代码语言:javascript
复制
Array ( [lang] => nl ) 

我知道这个脚本现在不安全,但现在不行了。我会在它开始工作后再增加安全措施。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-23 11:59:57

这是因为每次将cookie中的语言设置为"nl",您访问该站点,并且只有在设置了$_GET['lang']之后,才将其设置为另一种语言;但是没有$_GET['lang'],它再次被重新定位为"nl“。

代码语言:javascript
复制
setcookie("lang", "nl", time() + (24 * 60 * 60));

if(isset($_GET['lang'])) {
    $_COOKIE['lang'] = $_GET['lang'];
}

它应该是:

代码语言:javascript
复制
if (!isset($_COOKIE['lang'])) {
    setcookie("lang", "nl", time() + (24 * 60 * 60));
}

if (isset($_GET['lang'])) {
    setcookie("lang", $_GET['lang'], time() + (24 * 60 * 60));

    $_COOKIE['lang'] = $_GET['lang'];
}

当您使用setcookie时,它将不会存储在$_COOKIE中,而只是在下一次加载站点之后。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19541020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档