使用ob的PHP头部问题

我在页面的开始处使用ob_start()并在最后使用ob_end_flush()时遇到标题问题。 因为我在一些查询执行后使用头函数。

 ob_start();
 include_once("header.php");
 global $db;

 $countstmt="SELECT COUNT(*) FROM tbl_lib_hours dh WHERE book_id IN(SELECT book_id FROM tbl_book WHERE user_id=".$_SESSION['uid'].") ";       
 $delHourExist=$db->query($countstmt);  
 if($delHourExist){
      header("location:edit_delivery_hours.php");
 }
 ....
include_once('footer.php');
ob_end_flush();

在header.php中,我还添加了ob_start(); 并在footer.php我添加ob_end_flush(); ,但我认为这不是问题,尽管其他页面正在使用上面编写的相同脚本运行

我得到的错误:

警告:不能修改标题信息 - 已在第9行的D: xampp htdocs project add_book_hours.php中发送的标题


我有点困惑,警告消息不包括导致第一个内容发送到客户端的代码的位置。 函数headers_sent()也可以返回该位置。 所以,为了调试目的,请尝试

if($delHourExist)
{
  if ( headers_sent($path, $lineno) ) {
    echo '<pre>Debug: output started at ', $path, ':', $lineno, "</pre>n";
  }
  header("location: edit_delivery_hours.php");
}

第一个<?php之前是否有空格?

文件开头是否有UTF8-BOM?


你的代码中有很多不可见的输出:

<?php ob_start();?> --- THERE IS A LINE RETURN HERE ---
--- SPACES OR TABS ---<?php include_once("header.php"); ?> --- LINE RETURN ---
--- AND HERE ---<?php global $db;
     ...

退出开始和结束你的php标签。 只要这样做:

<?php 
    ob_start();
    include_once("header.php");
    global $db;
    ...

在调用ob_start()之前,确保没有输出,并且标签外没有空格。 如果你的错误是在第9行,那么你可能会遇到一连串的问题。 你可能想要发布所有这些行,编号,所以我们可以仔细看看他们。

链接地址: http://www.djcxy.com/p/34681.html

上一篇: PHP Header issue with ob

下一篇: PHP warning: headers already sent in Unknown