我有这个代码,它使用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());
?>
以下是上述代码的输出:
但是当我检查了我在file_put_contents中指定的html文件时。它给了我这个。我真的不明白为什么:
我的问题是如何从正在生成的html文件中获取正确的输出。
答案 0 :(得分:3)
在执行file_put_contents之前,您没有关闭输出缓冲区...
在脚本结束时将其更改为以下内容:
//...
close_connection($link);
$contents = ob_get_contents();
ob_end_clean();
file_put_contents('../tmp/customerpay.html', $contents);
?>