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