繁体   English   中英

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

[英]Getting Warning: Cannot modify header information on GoDaddy but not Wamp

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

警告:无法修改标头信息-已在/ home / content / 39/8810539 / html / pagoda /中发送的标头(输出始于/home/content/39/8810539/html/pagoda/view/header.php:2)第9行的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>  
    ....
    ....
    ....

顺便说一句您的代码中的一些错误:

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

2)您忘记了在“ <?php echo $ session-> getName()...”中转义的HTML:使用htmlspecialchars()

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

4)逻辑和视图应分开。

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


?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM