我有一个处理注册的类文件,注册成功后我想将它们重定向到另一个页面,但如果我使用类似的东西:
if(!isset($_SESSION['referer'])) {
$_SESSION['referer'] = "home.php";
header("Location: " . $_SESSION['referer']);
exit();
}
我收到错误:
Warning: Cannot modify header information - headers already sent by ...
是否有另一种(非java脚本)方式将用户重定向到另一个页面?
这是我目前的代码流程:
// index.php file
<?php
include('header.php');
include_once('classes/class.signup.php');
$signUp = new SignUp();
// redirect in signup.php class
if(!isset($_SESSION['referer'])) {
$_SESSION['referer'] = "home.php";
header("Location: " . $_SESSION['referer']);
exit();
}
答案 0 :(得分:0)
你最有可能得到这个错误,因为在你调用header()函数之前的某个地方你通过回显输出东西到浏览器。您可以使用ob_start()和ob_end_flush()的组合作为快速修复,但也许您应该重新考虑应用程序的流程。对于ob(输出缓冲区)函数,请在此处查看:http://www.php.net/manual/en/function.ob-start.php。
编辑:在php打开或关闭之前,即使是空格或其他空格也会产生相同的效果。
Edit2:无法确定您的示例中的代码是否有任何问题。尝试输出缓冲区功能,看看是否有帮助。不想用它们吗?您必须追踪已发送的输出。
答案 1 :(得分:0)
您可以使用网络浏览器的“查看源”功能来调查是否在异常之前将错误字符写入页面输出。也许你所包含的文件之一是罪魁祸首。
答案 2 :(得分:-2)
您可以尝试使用html元标记。第一个值是以秒为单位的延迟,第二个是您想要重定向到的网址。
<meta HTTP-EQUIV="REFRESH" content="0; url=http://www.yourdomain.com/index.html">