在PHP中生成可下载的.CSV文件
我在PHP中生成可下载的.CSV文件时遇到问题。在我的页面index.php中,我有一个调用自身的表单。在同一页中,我还包含了php文件csvHandler.php,该文件检查表单是否已提交,然后生成CSV文件。这样行。但问题是,当我向自动下载文件添加标题时,它会将整个php代码添加到该CSV文件中。你知道怎么解决这个问题吗 这是csvHandler.php的代码:在PHP中生成可下载的.CSV文件,php,html,mysql,csv,Php,Html,Mysql,Csv,我在PHP中生成可下载的.CSV文件时遇到问题。在我的页面index.php中,我有一个调用自身的表单。在同一页中,我还包含了php文件csvHandler.php,该文件检查表单是否已提交,然后生成CSV文件。这样行。但问题是,当我向自动下载文件添加标题时,它会将整个php代码添加到该CSV文件中。你知道怎么解决这个问题吗 这是csvHandler.php的代码: if (isset($_POST['submit_dCSV'])){ header('Content-Type: text
if (isset($_POST['submit_dCSV'])){
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="export.csv"');
header('Pragma: no-cache');
header('Expires: 0');
$message = "";
$institutions = explode_institutions();
$fp = fopen('php://output', 'w');
foreach ($institutions as $inst){
fputcsv($fp, $inst);
}
echo "Export successful";
}
当我运行这段代码时,它会下载一个CSV文件,但是有完整的PHP代码index.PHP。有什么想法吗
编辑
index.php:
<html>
<head>title</head>
<body>
...html code 1...
<form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<button type="submit" name="submit_dCSV" value="submit"></button>
</form>
<? include "csvHandler.php"; ?>
...html code 2...
</body>
</html>
如果我把ob_clean和ob_start放在csvHandler.php的开头,它会生成包含正确数据的csv文件,但它会添加以下所有代码,包括…html代码2…,/body,/html,。。。。如何解决这个问题?您的问题是输出缓冲 因为您已经在生成和输出HTML代码,所以您的缓冲区已经有了输出,如果您清理并重新启动它,您的问题应该得到解决 您可以在开始时添加以下内容:
if (isset($_POST['submit_dCSV'])){
ob_clean();
ob_start();
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="export.csv"');
header('Pragma: no-cache');
header('Expires: 0');
$message = "";
$institutions = explode_institutions();
$fp = fopen('php://output', 'w');
foreach ($institutions as $inst){
fputcsv($fp, $inst);
}
echo "Export successful";
}
清洁卫生;ob_启动@火影忍者,你能以答案的形式写出来吗?这对我的函数之前的代码的上半部分非常有效。但我函数后面的较低部分代码仍然存在。有什么想法吗?@Naruto-在safari的情况下,此代码不起作用,请帮助。