0

私は英国とアイルランドのサブフォルダーがあるサイトで作業しています。どちらのサイトも1つの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');
    }

これまでのところ、サイトの1つのバージョンにのみリダイレクトされます。

4

3 に答える 3

0

PHPで(setcookie()を使用して)作成されたCookieは、$_COOKIES配列にすぐには入力されません。要素はリクエストからのみ追加されます。実行時に値を追加することは可能かもしれませんが、私はこれに依存しません。

また、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のディレクトリによって定義されたパススコープを持つことに注意してください)。

于 2012-04-05T11:40:42.387 に答える
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

内のsに名前を付けている理由がわかりません。重要なのは選択者の名前です。<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 に答える