php中的ob_start函数问题

时间:2011-02-12 12:39:20

标签: php html

我有这个代码,它使用ob_start php函数。这基本上将回显的数据放入html文件中。它以前工作。我不知道我当时使用的是什么版本的php。但我目前的版本是5.3.0。我无法解释为什么它不起作用。因为下面的脚本正在运行,它只是将该脚本的输出放入html文件中:

<?php
ob_start();
?>
<h2>Customer Payment Summary</h2>
<a href="pdftransactions.php?acts=customerpay&ofile=<?php echo $customer.' customerpay '.$date; ?>"><img id="tablez" src="../img/system/icons/Oficina-PDF-icon.png"></img></a>

<?php
if($amtopay>=$curcred){
    $custchange=$amtopay - $curcred;
    $newcred = 0;

    echo "Change: ". $custchange."<br/>";
    query_database("DELETE  FROM sales_transaction WHERE Cust_Name='$customer'", "onstor", $link);
}else{
    query_database("UPDATE  customer_credit SET CREDIT='$newcred' WHERE Cust_Name='$customer'", "onstor", $link);
    echo "Remaining Balance: ". $newcred."<br/>";;
}

echo "Customer: ".$customer."<br/>";
echo "Amount paid: ". $amtopay. "<br/>";
echo "Date: ". $date." ". date('A');
close_connection($link);
?>

<?php
file_put_contents('../tmp/customerpay.html', ob_get_contents());
?>

以下是上述代码的输出: enter image description here

但是当我检查了我在file_put_contents中指定的html文件时。它给了我这个。我真的不明白为什么: enter image description here

我的问题是如何从正在生成的html文件中获取正确的输出。

1 个答案:

答案 0 :(得分:3)

在执行file_put_contents之前,您没有关闭输出缓冲区...

在脚本结束时将其更改为以下内容:

//...
close_connection($link);
$contents = ob_get_contents();
ob_end_clean();

file_put_contents('../tmp/customerpay.html', $contents);
?>