我现在正在处理我的语言脚本,我使用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 )
我知道这个脚本现在不安全但现在不能正常工作。我将在工作后添加安全性。
答案 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中。