2012-01-05 49 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

始終通話exit;Location頭之後:本身

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

header()功能只是收集報頭被髮送到客戶端。所以它不應該在任何特定標題後停止執行,例如Location。但只要它是沒有意義做一些之後你決定重定向用戶 - exit用於

+0

太棒了,解決了它。現在我只需要等10分鐘來接受你的回答。 :) – Paul 2012-01-05 04:46:12

0

您可以使用變量來保存位置的地址

這樣,你也可以execude後新的一些代碼位置已設置。

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

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

'你也可以在設置好新的位置後執行一些代碼。「---它絕對是**不做任何感覺**。你要麼決定重定向,要麼不。沒有執行後,只要它不能保證即使完成處理 – zerkms 2012-01-05 05:34:21

+0

雖然這是一個很好的方法,應該使用'退出'無論如何。 – 2012-01-05 05:34:27

+0

確定這是有效的,但這不是我正在尋找的。我正在尋找一種重定向的方式,而無需在頁面中運行更多的代碼,退出就是這樣做的。 – Paul 2012-01-05 18:46:14