我正在开发多语言网络应用程序。当用户设置语言时,它将存储在cookie中。 PHP脚本读取cookie并加载适当的语言文件。当用户更改语言时,cookie值会更改并重新加载页面。 PHP脚本仍然会读取旧的(错误的)cookie值。我在chrome中试过“空缓存并重新加载”选项,并尝试手动删除cookie,但PHP脚本仍然读取旧的cookie值。当我在控制台中使用JavaScript读取cookie时,它返回新的(正确的)值。
以下是不起作用的PHP代码段:
if (isset($_COOKIE['language'])) {
$language = $_COOKIE['language'];
require_once $_SERVER['DOCUMENT_ROOT'] . "/language/$language.php";
}
else {
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
setcookie("language", $lang, time()+31104000);
header($_SERVER['DOCUMENT_ROOT']);
die();
}
我在网上搜索过但没有找到任何答案,或者说是我的解决方案。
PS:我在同一台服务器上的另一个网络应用程序上使用相同的代码段并且它可以正常工作。
编辑:改变语言的JavaScript代码
function changeLanguage(lang) {
var d = new Date();
d.setTime(d.getTime() + (31536000000));
var expires = "expires="+ d.toUTCString();
document.cookie = "language=" + lang + "; " + expires;
location.reload();
}
编辑2: 在HTTP标头中有两个cookie的命名语言,所以看起来问题是由javascript代码引起的。
答案 0 :(得分:1)
const
如果这是为了重定向您,则会错过header($_SERVER['DOCUMENT_ROOT']);
前缀。您可能还需要URL而不是本地文件系统路径。
"Location: "