已经发送的标题,在A情况下没有意义,而不是B?

时间:2011-10-18 14:45:14

标签: php header http-headers output-buffering

下面的代码工作正常,它会返回一个导航链接列表,并为它们提供独特的颜色,但为什么要添加

 '<div title="Home" id="logo" onclick="window.location = \''.SITE_ROOT.'\';"></div>'

给我标头输出错误?

删除它使它工作正常。 即使<div></div>也会给我一个错误。我知道这是因为我正在提前输出,但是如果我删除了这个<div>,那么它之前仍然有一个div,它不会造成任何问题。

嗯,好吧,这是我的代码:

<?php
function printNavagation($this){
$i = 0; $n = 0; $x = count($this);          
echo '<div class="navagation"><div title="Home" id="logo" onclick="window.location = \''.SITE_ROOT.'\';"></div><ol><li class="libreak">|</li>'; 
while ($i < $x){

    $link[$i] = $this[$i]; // Link is same as name
    // Except theese:
    if ($link[$i] == 'home'){$link[$i] = '';} else if ($link[$i] == 'djs'){$this[$i] = 'DJs'; $link[$i] = 'djs/home';}
    // set onhover colors
    if('1' == $n){$color = 'pink';} else if('2' == $n){$color = 'green';} else if('3' == $n){$color = 'yellow';} else {$color = 'blue';} 

    echo '<li class="'.$color.'"><a href="'.SITE_ROOT.'/'.$link[$i].'">'.ucfirst($this[$i]).'</a></li><li class="libreak">|</li>';  //wrap results
    $i++; $n++; if($n >= 4){$n = 0;} // reset alternating color counter
}
echo'</ol></div>'; 
} 
?>

1 个答案:

答案 0 :(得分:2)

缓冲区正在填满,并被发送到服务器,然后发送到客户端。

删除该行代码可能会使输出足够小,以至于缓冲区尚未满。

输出内容后不输出标题。虽然您可以重新配置输出缓冲以使其工作,但这是不好的做法。稍后,您的服务器将被重新配置,您会想知道为什么您的代码被破坏了。