2012-09-23 52 views
0

我原来是用PHP头重定向用户。不过,在我的服务器上,我遇到了问题,因为HTML在位置标题之前出现。现在,改变我的脚本结构并不是我能做的事情。我可以使用什么其他方式重定向到我的PHP。用PHP重定向用户

我尝试了这些选项,但他们没有工作:

echo "<META HTTP-EQUIV="Refresh" Content="1; URL=index.php">"; 

而且单引号:

echo <META HTTP-EQUIV="Refresh" Content="1; URL=index.php">; 

既不方式合作。我能做什么?

+1

在您的PHP页面 –

回答

3

您可以enable output buffering。输出将被缓冲直到完成,允许您随时设置标题。

确实如此,您应该修复您的应用程序,以免设置您描述的方式。我知道你说这不是你可以做的事情,但是如果你将你的应用程序逻辑与你的HTML混合在一起,那么你可能会遇到其他问题。你的代码的可读性和可重用性是其中之一。

+0

+1开始处使用ob_start()来编码组织。 – Saurabh

1

看看Output Buffering ..您在第一次输出之前基本上调用ob_start()函数,在上次输出之后再调用ob_flush()

+0

对于他所需要的,没有必要这样做。您可以在php.ini中配置常规缓冲。 – Brad

+0

..它为整个服务器配置设置缓冲,即使你只需要一个页面/虚拟主机等等。对于其他使用缓存服务器范围的使用案例会破坏功能。在共享/付费托管中,您也无法轻松更改php.ini。 –

+0

基于被问到的问题,我的猜测是他的整个应用程序结构有点儿笨拙,他会在别处需要它。另外,我还没有看到共享托管服务提供商,您无法像这样为您的帐户设置PHP.ini指令。 – Brad

0

如果你想显示一些html内容,并在一段时间后重定向到其他页面。你可以使用下面的meta标签。

<meta http-equiv="refresh" content="5;url=http://www.example.com/otherpage"> 
+0

性能问题? – Saurabh

+0

@Saurabh你是什么意思?这与绩效有何关系? – xdazz

+0

我的意思是,如果我们只想重定向,那么为什么要加载整个页面。之后,它会解析,然后重定向发送另一个请求。这是一种生涩的体验。重定向应该发生在服务器端。 – Saurabh

1

而且有一个主要故障在你的PHP 试试这个

echo '<META HTTP-EQUIV="Refresh" Content="1; URL=index.php">'; 

因为你已经在使用元标签内的双引号,则必须使用单者开始和结束回声字符串。你去那里,Meta标签现在可以正常工作。

使用头

header('Location:http://www.mtrix.in'); 

exit(); 

的人将被重定向到提供该位置。 但是这必须在任何输出之前发送,或者甚至发送标题,因为标题只能发送一次,并且通常在输出之前发送。

您也可以输出以下

<script> 

window.location='index.php'; 

</script> 

的元标记应工作

<元HTTP的当量= “刷新” 内容=“2; URL = HTTP://mtrix.in/ “>

0

对不起,我没有意识到你在回声代码中犯的错误,所以我编辑了答案,检查了它,现在它应该工作。