获取警告:无法修改GoDaddy上的标头信息,但不能修改Wamp

时间:2012-02-11 05:34:06

标签: php webserver

我收到了Warning: Cannot modify header information。在WAMP上测试源代码时,我没有收到此错误。此外,在某些PHP中包含某些类,并且根据需要调用操作html的函数。任何人都可以指出我正确的方向吗?这是确切的错误和引用的文件。

  

警告:无法修改标头信息 - 已发送的标头   (输出始于   /home/content/39/8810539/html/pagoda/view/header.php:2)in   第9行/home/content/39/8810539/html/pagoda/controller/login.php

的login.php:

<?php

    global $session;
    global $view;

    if (isset($_POST['login']))
    {
        if ($session->logIn($_POST["uname"],$_POST["password"]))
            header("Location: $_SERVER[REQUEST_URI]");
        else
            $view->RenderMsg("Your username and/or password was incorrect.");
    }
    if (isset($_POST['logout']))
    {
        $session->logOut();
        header("Location: $_SERVER[REQUEST_URI]"); 
    }


?>

header.php片段:

<head>
<link rel="stylesheet" type="text/css" href="<?php echo BASEPATH; ?>/view/css/homepageStyle.css" />
</head>
<div id="header">
    <div id="banner">
        Pagoda
    </div>
    <div id="login">

<?php 

    //This controls the login/logout header on the top of each page.

    global $session;
    if ($session->isLoggedIn())
    {
?>
    <div id="nametag">
        <form method="POST" name="logout" action="">
        Welcome, <?php echo $session->getName()." (".$session->getRole().")"?>
        <input name="logout" type="hidden" value="Log Out"/>
        </form>
    </div>  
    ....
    ....
    ....

2 个答案:

答案 0 :(得分:0)

BTW代码中的一些错误:

1)不要使用“?&gt;”,否则如果文件末尾有空格(某些编辑会这样做),您将收到相同的警告

2)你在“&lt;?php echo $ session-&gt; getName()...”中忘记了HTML转义:使用htmlspecialchars()

3)不要使用全局变量。从不。

4)逻辑和视图应该分开。

答案 1 :(得分:0)

我用ob_start()解决了它。 ob_start首先将html写入缓冲区,然后在标题更改后将其写入浏览器。 ob_start在你的html代码之前。使用ob_end_flush();在header()之后关闭缓冲区是不必要的,但

header.php片段:

<?php
     ob_start()
 ?>

<head>
<link rel="stylesheet" type="text/css" href="<?php echo BASEPATH; ?>/view/css/homepageStyle.css" />
</head>
<div id="header">
    <div id="banner">
        Pagoda
    </div>
    <div id="login">

<?php 

    //This controls the login/logout header on the top of each page.

    global $session;
    if ($session->isLoggedIn())
    {
?>
    <div id="nametag">
        <form method="POST" name="logout" action="">
        Welcome, <?php echo $session->getName()." (".$session->getRole().")"?>
        <input name="logout" type="hidden" value="Log Out"/>
        </form>
    </div>  
    ....
    ....
    ....

的login.php

<?php

    global $session;
    global $view;

    if (isset($_POST['login']))
    {
        if ($session->logIn($_POST["uname"],$_POST["password"]))
            header("Location: $_SERVER[REQUEST_URI]");
            ob_end_flush();
        else
            $view->RenderMsg("Your username and/or password was incorrect.");
    }
    if (isset($_POST['logout']))
    {
        $session->logOut();
        header("Location: $_SERVER[REQUEST_URI]");
        ob_end_flush(); 
    }


?>