0

我正在一个有英国和爱尔兰子文件夹的网站上工作。这两个站点都使用一个 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>

我的 region-val.php 代码是

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

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

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

4

3 回答 3

0

我不明白你为什么在. 重要的是选择的名称。<options><select>

将表格更改为:

<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>

您给的名称<select>region-picker- 所以它是您感兴趣的输入的值。PHP 应该如下所示:

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');
}
于 2012-04-05T11:30:25.137 回答
0

设置 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将起作用。

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

于 2012-04-05T11:27:37.010 回答
0

在 PHP 中创建的 cookie(使用 setcookie())不会立即填充到 $_COOKIES 数组中 - 仅从请求中添加元素。在运行时添加一个值可能是可行的——但我不会依赖这个。

此外,HTML 选择返回单个项目,而不是数组。

更好的解决方案是:

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 的目录定义)。

于 2012-04-05T11:40:42.387 回答