我需要通过PHP创建CSV文件,但限制对负责创建文件的成员的下载访问权限。
网站会员可以选择将其个人资料数据输出到CSV文件。创建的CSV文件代表潜在的隐私问题。我担心如果两个成员同时创建CSV文件,重叠可能会导致一个成员的数据泄露给另一个成员。
<?php
$list = array (
array('1', '2', '3', '4'),
array('a', 'b', 'c', 'd')
);
$fp = fopen('file.csv', 'w');
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
?>
<!--File is in root-->
<a href="/file.csv">Download file.csv</a>
到目前为止,我的想法是为每个CSV文件指定一个唯一的名称,而不是重写相同的文件。虽然在浏览器中定位时文件仍然可访问,但这将解决重叠问题。我可以将CSV文件分配给受限制的文件夹,但是下载后可能更理想的是销毁文件。
对所有这些都有更好的方法吗?
答案 0 :(得分:5)
最简单的方法是将数据输出到stdout
并在调用脚本时发送正确的标题。
每个例子,你有这个HTML链接:
<a href="download_csv.php">Download as CSV</a>
在download_csv.php
中,您只需:
$list = array (
array('1', '2', '3', '4'),
array('a', 'b', 'c', 'd')
);
// Send the proper headers
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename=results.csv');
// Open stdout instead of an actual file
$fp = fopen('php://output', 'w');
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
这将解决你的两个问题。