我现在正在编写语言脚本,并使用cookie:
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语言之前)
Array ( [lang] => nl ) Print_r(mysite/?lang=en) (设置新语言)
Array ( [lang] => en )Print_r(mysite/) (删除?lang=en后)
Array ( [lang] => nl ) 我知道这个脚本现在不安全,但现在不行了。我会在它开始工作后再增加安全措施。
发布于 2013-10-23 11:59:57
这是因为每次将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中,而只是在下一次加载站点之后。
https://stackoverflow.com/questions/19541020
复制相似问题