2010-12-28 3 views
0

私はPHPに慣れていないですし、PHPを使用してリダイレクトするスクリプトを書きたい(私が働いているサーバは、ASPをサポートしていません)

てくださいこの

<?php if ($_GET[id]; == 'test') {echo '<meta http-equiv="refresh" content="0;URL=http://www.test.com" />'} ?> 

のようなものである必要があり、私はそのページがhttp://www.test.comまたはhttp://www.domain.com?id=exampleのようなクエリにリダイレクトする必要があり、それがhttp://www.theexamplesite.com

Usinにリダイレクトshoud http://www.domain.com?id=testのようなクエリ文字列を送信したいですgのjavascriptと古典的なASP私はこれのようにそれをやったでしょう:

<% if (Request.QueryString("id") == 'test') { %><meta http-equiv="refresh" content="0;URL=http://www.test.com" /><% } %> 
<% if (Request.QueryString("id") == 'example') { %><meta http-equiv="refresh" content="0;URL=http://www.theexamplesite.com" /><% } %> 

希望私を助けることができる!

ありがとうございました

答えて

4
<?php 

$targets = array(
    'test' => 'http://www.test.com/', 
    'example' => 'http://www.theexamplesite.com/', 
); 

if (isset($_GET['id']) && isset($targets[$_GET['id']])) 
{ 
    header('Location: '.$targets[$_GET['id']]); 
    exit; 
} 

あなたは設定済みのリダイレクトをよく見て、簡単に追加/削除/更新できます。

+1

いいですが、 '$ _GET ['id']'がセットされているかどうかをチェックしてください! –

+0

私はこのソリューションを気に入っているので、変数を簡単に表示できます! - ありがとうございました –

+0

target = "_ blank"のような新しいウィンドウでサイトを開くことは可能ですか –

3

構文エラーがあります。それは次のようになります。

if ($_GET['id'] == 'test') 

しかし、実際のリダイレクトのために、あなたはheaderを使用することがあります:

if(array_key_exists('id', $_GET) { 
    if($_GET['id'] === 'test') { 
     header('Location: http://www.test.com'); 
    } 
    else if($_GET['id'] === 'example') { 
     header('Location: http://www.theexamplesite.com'); 
    } 
} 

参考:array_key_existsあなたは簡単に書くことができ

+0

@Wookai:おかげで、私はそれを修正しようとしていました:?D –

+0

おかげで百万 - 私は今のところこれをしなかった<(場合$ _GETをPHP 'id'] == 'site')echo ''?> <?php if($エコー ''?>それはうまくいくようです –

+2

@Gerald Ferreira:うん、しかし、 'header'を使って私が言うよりクリーンな方法です。 –

1

<?php 

if ($_GET[id] == 'test') { 
    header('Location: http://www.test.com'); 
} 
else { 
    // real output 
} 

?> 
1

これは搾取の標的のように見えます。ユーザーのリダイレクトを開始する前に、$ _GET ['id']の値を検証する必要があります。誰かがhttp://www.domain.com?id=http://www.maliciouswebsite.comをしている場合、あなたのスクリプトはそこにそれらを取るでしょうか?

リダイレクトに注意して、多くの入力検証を行います。

+0

私は考えるべきではありません:私は昇進しているサイトにページランクを渡さないようにアフィリエイトリンクを隠すためにこれを書いています:idは私が設定した値と等しいでしょう:value = 1の場合、サイト2へ - 悪意のあるサイトを置くと定義されていないので動かないはずです –

1

私はASP/JavaScriptの知識を持っているので、なぜタスクを達成できなかったのか分かりません。

<?php 
    if ($_GET["id"] == 'test') 
    { 
     ?> 
     <meta http-equiv="refresh" content="0;URL=http://www.test.com" /> 
     <?php 
    } 
    if ($_GET["id"] == 'example') 
    { 
     ?> 
     <meta http-equiv="refresh" content="0;URL=http://www.theexamplesite.com" /> 
     <?php 
    } 
?> 

は、switch...case?:オペレータと同じ仕事をするために利用可能な他の構成要素があります。ちょうどあなたのASPスクリプトを少し微調整。 ?:オペレータはかなりあなたのコードを短縮することができます。

<meta http-equiv="refresh" content="0;URL=<?php echo $_GET['id'] == 'test' ? 'http://www.test.com' : 'http://www.theexamplesite.com'; ?>" /> 
+0

私は$ _GET関数で苦労したと思います。 –

関連する問題