2012-01-02 183 views
2

我用这个功能来重定向从一个PHP页面到另一个:PHP头功能不能正常工作

header('Location: student.php?cnp='.$_REQUEST['name']) ; 

在我的本地主机它的工作,但如果在网上测试它,它不会重定向。 我也试图给出完整的路径(如http://.../student.php?...),但它仍然不起作用。有谁知道为什么,我该怎么办?

+0

您是否收到任何错误消息?也许_“不能修改标题信息 - 标题已经发送...”_ ??? – rdlowrey 2012-01-02 17:49:27

+0

不......它只是保持在同一页上! – Madrugada 2012-01-02 17:52:36

+0

错误报告?你确定该行被执行? – JJJ 2012-01-02 17:54:36

回答

5

试试这个:

header('Location: http://www.example.com/someurl.php', true); 

第二个参数将取代以前的位置标头(如果有的话)。

还要检查你所收到的HTTP响应代码(应该是30X)

如果没有什么帮助,你可以随时通过JavaScript重定向:

echo "<script>window.top.location='http://www.example.com/someurl.php'</script>" 

这不是那么专业,但有效,即使头有已经发送。

+0

顺便说一句,第二个参数已经默认为'true'。 – ComFreek 2012-01-02 18:03:26

+0

谢谢大家,它工作。 很奇怪,但这里看后[1]我看到了不应该有前 <?PHP 后 ?> [1] http://forum.mamboserver.com/showthread.php任何空白ΔT= 49427 – Madrugada 2012-01-02 18:24:40

1

尝试之后加入session_write_close();exit()

session_write_close(); 

header('Location: student.php?cnp='.$_REQUEST['name']) ; 

exit(); 

刚看到错误消息中的注释。如果有,请将ob_start();添加到您网页的顶部,并在session_start()之下。

+0

我没有任何会议......我仍然应该加上你说的吗? – Madrugada 2012-01-02 18:13:37

+1

是的,你应该仍然添加它。把它放在主文件的顶部。 – Tim 2012-01-02 19:16:25

0

我尝试这个解决方案,它没有工作

header('Location: http://www.example.com/someurl.php', true); 

所以我建议人们去与这两种可能如下解决方案,为我工作。

使用JS

echo "<script>window.top.location='http://www.example.com/someurl.php'</script>" 

使用META

echo '<META HTTP-EQUIV="Refresh" Content="0; URL=http://www.example.com/someurl.php">'; 

这两个都为我工作。但由于某种原因标题的东西不工作在网络上,但工作在本地非常好。我将使用元解决方案。

0

您的header()不工作,因为头已经发送到浏览器。 在页面的开头使用ob_start()(甚至在DOCTYPE声明之前)。而在年底,使用ob_end_flush()

0

尝试这个www.psychocodes.in

<?php 
ob_start(); 

//more code 
header("Location:URL"); 

ob_end_flush(); 
?> 
0

我只是有这个建议为我工作了同样的问题。将这个功能在你的代码的顶部:

function move_to(){ 
header('Location: student.php?cnp='.$_REQUEST['name']); 
} 

,随时随地调用函数:顺便说一下

move_to() 

,我不为它会邀功。我刚刚发现它在:Header function not working PHP