0

私はこの小さなphpページを作成しました。これは、URLに入力された値によってユーザーをリダイレクトする必要があります。しかし、スクリプトは機能していないようです。私が見逃したものはありますか?

<?php
if ($choice=="stb")
  $redirect="http://www.webpage1.com/";

    elseif ($choice=="player")
        $redirect="http://www.alternativewebpage.com/"; 

    else
        $redirect="http://www.world-tvpro.com/";

header( 'Location: '.$redirect ) ;
?>

ページがscript.phpとしてサーバーに保存されている場合は、次のように実行します。http://mypage.com/script.php?choice=stb ..予想されるのは、www.webpage1.comにリダイレクトされることですが、何を書いても、 http://www.world-tvpro.com/にリダイレクトされます。

4

5 に答える 5

1

register_globals危険なという機能に依存しています。スクリプトでクエリ文字列パラメーターにグローバルを設定させるのではなく、$_GETスーパーグローバルを使用します。

if ( isset($_GET['choice']) && $_GET['choice'] === 'stb' ) {

例えば。

于 2012-11-29T20:23:36.427 に答える
0

PHP は一連のスーパー グローバル配列を使用して、クライアントからサーバーに情報を渡します。それらは次のとおりです。

 $_GET, $_POST, $_COOKIE and $_REQUEST

あなたの場合、URL の値をクエリ パラメータとして渡すため、$_GET を使用して選択肢を取得する必要があります。

$choice = $_GET['choice'];

注: リクエストは $_GET、$_POST、および $_COOKIE のすべての値を含むスーパー グローバル配列であるため、$_REQUEST を使用して取得することもできます。

リクエストだけで上記と同じことをするだけです:

$choice = $_REQUEST['choice'];

お役に立てれば。

于 2012-11-29T20:25:50.600 に答える
0

$choice = isset($_GET['choice']) ? $_GET['choice'] : false;ステートメント全体の上に : を追加するIFと、コードは問題ないはずです。

また、IF ステートメントも問題ありませんが、case ステートメントも同様にうまく機能します。

$choice = isset($_GET['choice']) ? $_GET['choice'] : false;
switch($choice){
    case "stb":
        $redirect = 'http://www.webpage1.com/'; break;
    case "player":
        $redirect = 'http://www.alternativewebpage.com/'; break;
    default:
        $redirect = 'http://www.world-tvpro.com/';
}
header("Location: ".$redirect);
exit;
于 2012-11-29T20:26:00.747 に答える
0

$_GET['choice'](または)を使用する必要がありますisset($_GET['choice']) ? $_GET['choice'] : null

于 2012-11-29T20:23:11.880 に答える
0

これは私にとってはうまくいくようですが、ステートメントの周りに { } を使用しないと問題が発生することがあります。

<?php
if ($_GET['choice'] == "stb")
{
    $redirect="http://www.webpage1.com/";
} elseif ($_GET['choice'] == "player") {
    $redirect="http://www.alternativewebpage.com/"; 
} else {
    $redirect="http://www.world-tvpro.com/";
}
header( 'Location: '.$redirect );
?>

また、 $_GET['choice'] は、URL クエリ文字列から変数を取得する方法です。

于 2012-11-29T20:23:51.617 に答える