0

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

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

如果我去 mysite/ ?lang=en该网站将是英文的,但当我去 mysite/ 时,它会回到主要语言(荷兰语)。cookie 已设置,我可以在谷歌浏览器中看到信息,但它不起作用。

Print_r(mysite/) (设置语言之前)

Array ( [lang] => nl ) 

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

Array ( [lang] => en )

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

Array ( [lang] => nl ) 

我知道这个脚本现在不安全,但它现在不起作用。我将在其工作后添加安全性。

4

1 回答 1

1

因为你每次都将cookie中的语言设置为“nl”,所以你访问了网站,只有你$_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 中,只有在下次加载站点后才会存储。

于 2013-10-23T11:59:57.827 回答