0

基本的には、URL から変数を取得しており、入力した状態に基づいてユーザーをカスタム ページに送信する必要があります。つまり、カバーされた状態の 1 つである場合、カスタム ページに送信されます...それは、標準の状態に送信される他の状態です。

単純な if ステートメントに else を使用したものだと思いますが、何らかの理由で正しく動作しません。

<?php
$state = urlencode($_GET['state']);
if ($state=="california"){$link = "http://website.com/page1";}
else if ($state=="new york"){$link = "http://website.com/page2";}
else if ($state=="ohio"){$link = "http://website.com/page3";}
else  {$link = "http://website.com/default";}
header("Location: $link");
?>

これは正しいですか、それとも何か他のことをする必要がありますか?

4

5 に答える 5

1

別のオプションは、連想配列を使用することです。選択肢がたくさんある場合、これは魅力的です。

$statemap = array('california' => 'page1',
                  'new york' => 'page2',
                  'ohio' => 'page3');

$state = $_GET['state'];
$link = 'http://website.com/' . array_key_exists($state, $statemap) ? $statemap[$state] : 'default'
header("Location: $link");
于 2012-09-28T00:59:20.377 に答える
1

urlencode不要であり、バグが発生することさえあります ( が に変わるため、 などの文字列と一致することはありません"new york") 。urlencode$state"new+york"

それ以外は、コードは問題ないようです。外すだけで元気になります。

于 2012-09-27T23:52:50.760 に答える
1

使用する必要はありませんurlencode

<?php
    $state = $_GET['state'];
        if ($state=="california"){
              $link = "http://website.com/page1";
         } else if ($state=="new york") {
              $link = "http://website.com/page2";
         } else if ($state=="ohio"){
             $link = "http://website.com/page3";
         } else {
             $link = "http://website.com/default";}
                  header("Location: $link");
?>
于 2012-09-27T23:57:03.350 に答える
1

でこれを行いswitch、繰り返されるものを組み合わせる方が整頓されています:

switch($_GET['state']) {
    case "california": $page = "page1"; break;
    case "new york": $page = "page2"; break;
    case "ohio": $page = "page3"; break;
    default: $page = "default"; break;
}
header("Location: http://website.com/".$page);
于 2012-09-27T23:57:58.353 に答える
1

URLの文字列がエンコードされていない限り、「GET」したものをエンコードするためにurlencode関数は必要ありません。ただし、その場合は urldecode 関数が必要ですが、それでも urlencode は必要ありません。

したがって、コードは次のようになります。

<?php
$state = $_GET['state'];
//or $state = urldecode($_GET['state']); 
//if you are receving an encoded url.
if ($state=="california"){$link = "http://website.com/page1";}
else if ($state=="new york"){$link = "http://website.com/page2";}
else if ($state=="ohio"){$link = "http://website.com/page3";}
else  {$link = "http://website.com/default";}
header("Location: $link");
?>

また、URL の「状態」を確認してください。必要な正しい文字列を受け取りましたか? $state を echo してみて、何が得られるか見てみましょう。

于 2012-09-28T00:10:59.260 に答える