Php 使用javascript重定向到该网站的英国或爱尔兰版本

Php 使用javascript重定向到该网站的英国或爱尔兰版本,php,cookies,redirect,user-input,versions,Php,Cookies,Redirect,User Input,Versions,我在一个有英国和爱尔兰子文件夹的网站上工作。这两个网站都使用同一个CMS,其中包括爱尔兰部分和英国部分。我想存储一个cookie,其中包含他们从下拉列表中选择的站点版本 到目前为止,我的代码是Index.html <form id="region_select" name="region_select" action="/includes/region-val.php" method="post"> <select id="region-picker" name

我在一个有英国和爱尔兰子文件夹的网站上工作。这两个网站都使用同一个CMS,其中包括爱尔兰部分和英国部分。我想存储一个cookie,其中包含他们从下拉列表中选择的站点版本

到目前为止,我的代码是Index.html

<form id="region_select" name="region_select" action="/includes/region-val.php" method="post">
        <select id="region-picker" name="region-picker" onchange="this.form.submit();">
            <option>--- Please Select Your Region ---</option>
            <option value="IE" id="IE" name="set_region[IE]">Visit Irish Website</option>
            <option value="UK" id="UK" name="set_region[UK]">Visit UK Website</option>
        </select>
        <input type="submit" name="submit_region" value="Go!"/>
        </form>

到目前为止,它只重定向到站点的一个版本。

设置cookie后,请将页面重定向为当前请求

 if (isset($_POST["submit_region"])) {
        $region = key($_POST["set_region"]);
        setcookie("region", $region, time() + 24 * 3600);
        // add code for redirect at current page without post vars
    }  
然后饼干就会起作用了


注意:您可以在重定向后获取cookie值。

我不明白您为什么要给
中的
命名。选择的名称很重要

将表单更改为:

<form id="region_select" name="region_select" action="/includes/region-val.php" method="post">
  <select id="region-picker" name="region-picker" onchange="this.form.submit();">
    <option>--- Please Select Your Region ---</option>
    <option value="IE">Visit Irish Website</option>
    <option value="UK">Visit UK Website</option>
  </select>
  <input type="submit" name="submit_region" value="Go!"/>
</form>
在PHP中创建的cookie(使用setcookie())不会立即填充到$\u cookie数组中-元素仅从请求中添加。在运行时添加一个值可能是可行的,但我不相信这一点

HTML select还返回单个项,而不是数组

更好的解决办法是:

if (isset($_POST["set_region"])) {
    $region = $_POST["set_region"];
    setcookie("region", $region, time() + 24 * 3600);
}  

if($_COOKIE["region"] == "UK" || $region == "UK"){
    header('Location:http://google.com');   
}
else{
    header('Location:http://yahoo.com');
}

或者,使用javascript设置cookie(但请确保它的路径范围由表单出现的URL目录定义)。

那么问题出在哪里?Javascript在哪里?问题是我想根据用户的选择重定向到某个子文件夹。我还想将该值存储在一个单独的文件中的另一个函数中,感谢它现在似乎可以与此和symcbean解决方案一起使用。
if (isset($_POST["region_picker"])) {
    $region = $_POST["region_picker"]);
    // Maybe you should check here that the user has submitted a valid region
    setcookie("region", $region, time() + 24 * 3600);
}  

if($_COOKIE["region"] == "UK"){
    header('Location:http://google.com');   
}
else{
    header('Location:http://yahoo.com');
}
if (isset($_POST["set_region"])) {
    $region = $_POST["set_region"];
    setcookie("region", $region, time() + 24 * 3600);
}  

if($_COOKIE["region"] == "UK" || $region == "UK"){
    header('Location:http://google.com');   
}
else{
    header('Location:http://yahoo.com');
}