如何查看是否在浏览器中打印了某些内容?我已经尝试过headers_sent但它是标题... 如果没有打印我想下载文件:
public function download() {
$file = null;
$line = null;
if(headers_sent($file, $line)) {
/* generic exception... change that... */
throw new Exception('Headers was sent before in file ' . $file . ', line #' . $line);
}
header('Content-Description: File Transfer');
header('Content-Type: ' . $this->mime);
header('Content-Disposition: attachment; filename=' . $this->name);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $this->size);
readfile($this->path);
谢谢。
答案 0 :(得分:1)
您可以使用PHP Output control functions检查浏览器是否有任何输出。
示例:
<?php
ob_start();
echo 'something';
$output = ob_get_contents();
if (!empty($output))
{
die('something was printed');
}
else
{
readfile();
}
答案 1 :(得分:0)
简短的回答是你不能。将数据发送到客户端后,您无法找到对该数据执行的操作。
This question有一些解决方法的想法,但它们都不是故障安全的。
答案 2 :(得分:0)
我不知道检测输出是否已经启动的任何方法。我认为headers_sent
是一种检测方法,因为PHP会在执行脚本中的第一个输出中发送标题。
如果您需要控制何时启动输出,您应该查看output buffering control。