有如下代码:
if(在此之前是否已经向浏览器输出过内容?){
  exit('已经输出过了!’);
}else{
  echo ‘还没有输出任何内容’;
  echo ‘现在开始输出。’;
}此段代码的环境比较复杂,我不能保证引用这段代码的页面开了ob_start,也不能保证这段代码的前面有什么代码。

解决方案 »

  1.   

    做一個標記...tag 如果條件判斷有执行到的地方.
     将那个标记的值 改变..然后通过标记来进行判断.
      

  2.   

    比如我想用__LINE__得到当前行,但是就算当前行是2,天知道第一行输出了什么?因为没有Ob_start,所以无法计算ob缓冲区大小是否为0,那么有什么别的办法知道php在运行我这段代码之前是否已有过输出?
      

  3.   

    假设我这段代码前面只有一对html代码,并没有php代码呢?我的代码只是简单的放在最后面而已,如果前面有什么内容已经输出了,我的代码就啥都不做就exit了,但是如果在我的代码之前没有任何输出,那我的代码可就有话要讲了。
      

  4.   

    if( (ob_get_level() && ob_get_contents()) 
       && @header('Content-type: text/html;charset=utf-8') === NULL ) {
      exit('已经输出过了!’);
    }else{
      echo ‘还没有输出任何内容’;
      echo ‘现在开始输出。’;
    }ob_get_level() && ob_get_contents() 表示已经打开缓冲,并且缓冲区不为空
    @header('Content-type: text/html;charset=utf-8') === NULL 表示发出http头失败
    也可以用 @setcookie('test', 1) === false 
      

  5.   

    @header('Content-type: text/html;charset=utf-8') === NULL 表示发出http头失败
    够离经叛道!失敬失敬。