PHP标头功能无法正常工作

时间:2012-01-02 17:48:26

标签: php redirect

我曾经使用这个函数从一个php页面重定向到另一个:

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

在我的localhost中它确实有效,但如果在互联网上测试它,它不会重定向。 我也试图提供完整的路径(如http://.../student.php?...),但它仍然无法正常工作。有谁知道我为什么要做什么?

6 个答案:

答案 0 :(得分: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>"

这不是那么专业,但即使标题已经发送也能正常工作。

答案 1 :(得分:2)

尝试之前添加session_write_close();并在exit()之后添加:

session_write_close();

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

exit();

刚看到评论中的错误消息。如果您有ob_start();,请将session_start()添加到您网页的顶部。

答案 2 :(得分: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">';

这两个都对我有用。但由于某些原因,标题的东西在网上不起作用,但在本地工作完全正常。我将使用元解决方案。

答案 3 :(得分:0)

您的header()无效,因为标头已发送到浏览器。 在页面开头使用ob_start()(甚至在DOCTYPE声明之前)。最后,使用ob_end_flush()

答案 4 :(得分:0)

试试这个www.psychocodes.in

<?php
ob_start();

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

ob_end_flush();
?>

答案 5 :(得分:0)

我刚才有同样的问题,这个建议对我有用。将此函数放在代码顶部:

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

并使用以下命令调用该函数:

move_to()
顺便说一句,我不会因此而受到赞扬。我刚刚在Header function not working PHP

找到了它