Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置cookie以保存用户的语言选择,并重定向到所选页面而不是主页_Javascript_Php_Cookies_Region - Fatal编程技术网

Javascript 设置cookie以保存用户的语言选择,并重定向到所选页面而不是主页

Javascript 设置cookie以保存用户的语言选择,并重定向到所选页面而不是主页,javascript,php,cookies,region,Javascript,Php,Cookies,Region,我正在制作一个区域选择器,允许用户选择他们想要查看我们网站的区域/语言。我陷入困境的部分是,试图让cookie就位,这样,当用户再次尝试访问主域时,只要选择一个区域(例如中国),他们就会自动重定向到以前选择的区域 有没有可能获得一些帮助来开始工作?您应该能够在服务器端或客户端完成这项工作。我认为服务器端是一种更好的方式。当主页被点击时,你会首先检查LangCookie,如果设置了,会将它们重定向到正确的lang特定主页。应该相当直截了当 像这样的。如果你有很多语言,也可以使用switch语句 i

我正在制作一个区域选择器,允许用户选择他们想要查看我们网站的区域/语言。我陷入困境的部分是,试图让cookie就位,这样,当用户再次尝试访问主域时,只要选择一个区域(例如中国),他们就会自动重定向到以前选择的区域


有没有可能获得一些帮助来开始工作?

您应该能够在服务器端或客户端完成这项工作。我认为服务器端是一种更好的方式。当主页被点击时,你会首先检查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) ) );
}