Javascript 设置cookie以保存用户的语言选择,并重定向到所选页面而不是主页
我正在制作一个区域选择器,允许用户选择他们想要查看我们网站的区域/语言。我陷入困境的部分是,试图让cookie就位,这样,当用户再次尝试访问主域时,只要选择一个区域(例如中国),他们就会自动重定向到以前选择的区域Javascript 设置cookie以保存用户的语言选择,并重定向到所选页面而不是主页,javascript,php,cookies,region,Javascript,Php,Cookies,Region,我正在制作一个区域选择器,允许用户选择他们想要查看我们网站的区域/语言。我陷入困境的部分是,试图让cookie就位,这样,当用户再次尝试访问主域时,只要选择一个区域(例如中国),他们就会自动重定向到以前选择的区域 有没有可能获得一些帮助来开始工作?您应该能够在服务器端或客户端完成这项工作。我认为服务器端是一种更好的方式。当主页被点击时,你会首先检查LangCookie,如果设置了,会将它们重定向到正确的lang特定主页。应该相当直截了当 像这样的。如果你有很多语言,也可以使用switch语句 i
有没有可能获得一些帮助来开始工作?您应该能够在服务器端或客户端完成这项工作。我认为服务器端是一种更好的方式。当主页被点击时,你会首先检查LangCookie,如果设置了,会将它们重定向到正确的lang特定主页。应该相当直截了当 像这样的。如果你有很多语言,也可以使用switch语句
if($_COOKIE['lang'] === 'CHN') {
header('Location: /chn/index.php');
}
Javascript方式
你可以用它来做这件事
如何重定向用户
在javascript文件中,添加以下内容
// Test if localStorage is supported by the user's browser
if (typeof(Storage) !== "undefined") {
var countryCode = localStorage.getItem("countryCode");
if (countryCode) {
window.location.href = 'http://www.your-website.com/' + countryCode;
}
}
如何设置本地存储
首先,必须侦听select元素上的更改事件
document.getElementById("yourSelect").addEventListener("change", setNewRegion);
然后,设置您的本地存储(我假设您的选项值是国家代码)
我建议创建一个函数,测试本地存储是否受支持一次,并将结果存储在全局变量中
希望获得此帮助首先,您必须确定Cookie是否已设置, 如果是:重定向。如果没有:在提交表单时设置cookie 过期时间的转换:
time()+(60*n)
=>n分钟time()+(60*60*n)
=>n小时time()+(60*60*24*n)
=>n天time()+(60*60*24*365*n)
=>n年是否可以查看您尝试过的代码?如果按照主题启动程序的要求在“每当他们再次尝试访问主域时”上执行此操作,则此方法将使您的页面进入重定向循环:获取语言变量-->重定向-->获取语言变量-->重定向。。。
function setNewRegion(e) {
// Get the selected value
var countryCode = e.target.value;
// Test if localStorage is supported by the user's browser
if (typeof(Storage) !== "undefined") {
// localStorage is available
localStorage.setItem("countryCode", countryCode);
}
// ... Then redirect ?
}
if( isset($_COOKIE['lang']) && !empty($_COOKIE['lang']) ){
header('Location: /path/to/' . $_COOKIE['lang'] . '/');
}elseif( isset($_GET['lang']) && !empty($_GET['lang']) ){
$_COOKIE['lang'] = $_GET['lang'];
//Or you could use this method(preffered)
//setcookie(name, value, expire);
setcookie("lang", $_GET['lang'], ( time() + (60*60*24*365*2) ) );
}