替换PHP标头?

时间:2012-01-13 02:18:15

标签: php html http-headers

  

可能重复:
  Headers already sent by PHP

我有一个处理注册的类文件,注册成功后我想将它们重定向到另一个页面,但如果我使用类似的东西:

    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();
}

3 个答案:

答案 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">