是否有办法在不使用header('Location:'.'');
的情况下在PHP中重定向页面,因为它总是会出现会话问题(:无法发送会话缓存限制器 - 已发送的标头)
答案 0 :(得分:3)
还有其他选项可以在HTML中重定向(例如使用META
或JavaScript)。但这不是一个正确的HTTP重定向。
因此,不应寻找替代方案,而应该更好地使HTTP变体工作。在这种情况下,如果尚未发送HTTP标头,则只能修改它。只要你做一些输出(显式或隐式)就会发生这种情况。您可以通过在发生任何输出之前缓冲输出调用输出控件的ob_start
来阻止这种情况,可能直接在您请求的脚本文件的开头:
<?php
ob_start();
// rest of the file
确保在打开的PHP代码<?php
之前没有任何内容,如空行或UTF BOM。
答案 1 :(得分:2)
不,没有header
你运气不好(你可以使用Apache的mod_rewrite,但这会在你的文件被触摸之前发生)。
为什么不使用ob_start
(输出缓冲)。请参阅PHP manual以获得快速入门。
答案 2 :(得分:1)
如前所述,在应用程序页面的最顶部使用ob_start()。不要实现其他答案中提到的狡猾的javascript函数,我会说它们是非常糟糕的做法。 PHP已经存在了一段时间,所以它经过测试和工作,你可能有错误的空白区域或输出一些东西到浏览器然后尝试修改你不能做的标题信息。所以:
使用ob_start 检查错误的空格并删除它