使用ob_start()和ob_end_flush()的PHP标题问题 [英] PHP Header issue with ob_start() and ob_end_flush()

查看:74
本文介绍了使用ob_start()和ob_end_flush()的PHP标题问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我在页面的开头使用 ob_start()并且 ob_end_flush()在结束。因为我在执行一些查询后使用了头函数。

I get header problem while I use ob_start() in the beginning of a page and ob_end_flush() at the end. Because I use header function after some query execution.

 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(); ,但我认为这并不是问题,尽管其他页面正在使用上面写的相同脚本运行

In header.php there I also added ob_start(); and in footer.php i added ob_end_flush(); , but I think that is not problem, although other pages are running with same script I write above

我得到的错误:

The error I am getting:


警告:无法修改标题信息 - 头文件已发送到D:\xampp\htdocs\project\add_book_hours.php on line 9

Warning: Cannot modify header information - headers already sent in D:\xampp\htdocs\project\add_book_hours.php on line 9


推荐答案

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

I'm a bit baffled the warning message doesn't include the location of the code that caused the first content to be sent to the client. The function headers_sent() can return that location, too. So, for debugging purposes, please try

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

这篇关于使用ob_start()和ob_end_flush()的PHP标题问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆