我需要通过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>
Run Code Online (Sandbox Code Playgroud)
到目前为止,我的想法是为每个CSV文件提供一个唯一的名称,而不是重写相同的文件.虽然在浏览器中定位时文件仍然可访问,但这将解决重叠问题.我可以将CSV文件分配给受限制的文件夹,但是下载文件后销毁文件可能更为理想.
有没有更好的方法来解决所有这些问题?
最简单的方法是在stdout调用脚本时将数据输出到并发送正确的标头.
例如,您有这个HTML链接:
<a href="download_csv.php">Download as CSV</a>
Run Code Online (Sandbox Code Playgroud)
在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);
Run Code Online (Sandbox Code Playgroud)
这将解决你的两个问题.
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |