重新加载后PHP cookie无法正常工作

时间:2013-10-23 11:56:53

标签: php cookies

我现在正在处理我的语言脚本,我使用cookies:

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

如果我去mysite / ?lang = en 该网站将使用英文,但是当我转到mysite /回到主要语言(荷兰语)时。已设置Cookie,我可以在Google Chrome中查看该信息,但无效。

Print_r(mysite /)(在设定语言之前)

Array ( [lang] => nl ) 

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

Array ( [lang] => en )

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

Array ( [lang] => nl ) 

我知道这个脚本现在不安全但现在不能正常工作。我将在工作后添加安全性。

1 个答案:

答案 0 :(得分:1)

因为你每次都在cookie中设置语言,所以你访问该网站,只有你设置了$_GET['lang'],然后你才能将它设置为另一种语言;但没有$_GET['lang']它再次重置为" nl"。

setcookie("lang", "nl", time() + (24 * 60 * 60));

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

应该是:

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中。