我曾经使用这个函数从一个php页面重定向到另一个:
header( 'Location: student.php?cnp='.$_REQUEST['name']) ;
在我的localhost中它确实有效,但如果在互联网上测试它,它不会重定向。
我也试图提供完整的路径(如http://.../student.php?...
),但它仍然无法正常工作。有谁知道我为什么要做什么?
答案 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)
<?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 找到了它