在CSV文件中导出会话变量。PHP
我试图将会话数组中的一些数据导出为CSV,但当我在文件的开头包含会话_start()而不是创建可下载的文档时,它会将其回显到浏览器。我是否需要采取不同的方法,或者是否有办法解决这一问题?如果没有session_start(),它将创建并下载文件,但文件为空,因为缺少我的会话数组在CSV文件中导出会话变量。PHP,php,Php,我试图将会话数组中的一些数据导出为CSV,但当我在文件的开头包含会话_start()而不是创建可下载的文档时,它会将其回显到浏览器。我是否需要采取不同的方法,或者是否有办法解决这一问题?如果没有session_start(),它将创建并下载文件,但文件为空,因为缺少我的会话数组 header( "Content-Type: text/csv;charset=utf-8" ); header( "Content-Disposition: attachment;filename=\"
header( "Content-Type: text/csv;charset=utf-8" );
header( "Content-Disposition: attachment;filename=\"$filename\"" );
header("Pragma: no-cache");
header("Expires: 0");
session_start();
include $_SERVER['DOCUMENT_ROOT']."/Includes/object_one.php";
include $_SERVER['DOCUMENT_ROOT']."/Includes/object_two.php";
$fp= fopen('php://output', 'w');
foreach ($_SESSION['data'] as $fields){
fputcsv($fp, $fields);
}
fclose($fp);
exit();
如果有帮助,我的数组采用以下格式:
$data = array(dataset1(array, of, data), dataset2(array, of, data), dataset#(array, of, data));
编辑:会话_Start似乎不是问题的原因,但包含的内容确实是问题的原因 这可能是标题问题。如果在header函数之前打印某些内容(例如由于错误的php标记关闭而导致文件包含的空格),则所有的header都不起作用。在声明标头之前,请尝试放置
ob_clean()
,并检查是否有效。使用浏览器开发控制台找出两次尝试之间发送的标头的差异。这就是你感兴趣的。