2012-01-05 10 views
0

最後にリダイレクトヘッダーがあるスクリプトを作成していました。ヘッダーの場所が一度にリダイレクトされず、代わりを探す

次に、特定の条件が発生した場合は、途中にリダイレクトヘッダーを追加しました。

私は最後のヘッダー( "Location:http // mydomain.com")がトリガーされたことに気づいたことに非常に驚きました。私はヘッダーがページから自動的に「飛び降りる」と思ったが、メモリ内に保持し、最初にページ全体を通過するように思える。

「適切な」方法で「フローを切り詰めてページを変更する」というアイデアは何ですか?

<?php 
$specific_condition=true; 
// I wanted this to be the end 
if($specific_condition) header("Location: http://google.com/"); 
// But it still triggers following redirect 
header("Location: http://bing.com/"); 
?> 

答えて

3

常に右あなたのLocationヘッダの後に呼び出しexit;:それだけで

if($specific_condition) { 
    header("Location: http://google.com/"); 
    exit; 
} 

header()機能は、単にクライアントに送信するヘッダを収集します。したがって、特定のヘッダの後に実行を停止することは想定されていません。 Location。しかし、限り、それはあなたがユーザーをリダイレクトすることを決め後に何かやっても意味がありませんよう - exit

+0

素晴らしい、それを解決しました。今私はちょうどあなたの答えを受け入れるために10分待たなければなりません。 :) – Paul

0

を使用しているあなたが場所アドレス

をこのように保持する変数を使用することができます、また新しいの後にいくつかのコードをexecudeすることができます場所が設定されます。

$location = 'http://bing.com/'; 
$specific_condition=true; 
if($specific_condition) $location = 'http://google.com'; 

//do something else 
header("Location: " . $location); 
+0

'新しい場所が設定された後にいくつかのコードを実行することもできます.' ---絶対に**感謝しません**。あなたはリダイレクトするかどうかを決めました。実行後も実行しませんが、処理を完了することさえ保証されていない限り、 – zerkms

+0

これは良いアプローチですが、とにかく 'exit'を使用する必要があります。 –

+0

これは確実に動作しますが、私が探していたものではありません。私は、ページ内のコードを実行することなくリダイレ​​クトする方法を探していましたが、終了するだけでした。 – Paul

関連する問題