我已经看到了一篇关于这个问题的帖子,但它并没有给出一个解决方案(至少对我来说没有)...
我有一个PHP页面,执行一些基本的MySQL查询,将结果显示在页面上。在这个过程中,我使用了一些$_GET和$_SESSION变量。
在同一个页面中,我还允许用户通过调用函数“导出到CSV”。从导出返回的文件底部包含CSV结果,但也包含我的页面的HTML代码(调用函数)。
现在,在页面顶部我有ob_start(),在页面底部我有ob_flush(),否则在页面加载时我会收到一些“无法修改头部...”错误。因此,如我所阅读的帖子所建议的:
My guess is that you've got some sort of template that generates the same HTML header and footer regardless of the page that is requested. Sometime before the exportCSV function is called, the header is generated.
You don't show the bottom of the output, but I'll bet the footer is there too, since I suspect the flow control will continue on to that code after the function exits."
(http://stackoverflow.com/questions/207019/why-am-i-getting-html-in-my-mysql-export-to-csv/207046)
有人知道如何防止这种情况发生吗?如果需要,我可以发布一些代码...
谢谢!
编辑:
在调用我的导出函数之前调用ob_end_clean()可以清除CSV之前的任何html。然而,我仍然会在CSV结果后面得到一些HTML关闭标签...
fname lname MONTH WeekdayCount WeekendCount
John Doe 8 1 0
John Doe 7 3 2
Jane Smith 7 3 2
</div>
</div>
</div>
</body>
</html>
编辑:
在调用CSV导出脚本后,通过调用exit()函数解决了此问题。