我很困惑如何允许在付款后下载file.zip。如果我将它们重定向到下载页面,文件放在服务器中,他们可以轻松地再次下载文件,或者他们可以将该链接传递给任何人。
请提出任何建议!
答案 0 :(得分:1)
不要使用文件的直接链接 - 使用提供文件作为下载的PHP文件,但仅当找到某个会话var时(在确认付款流程时创建)
答案 1 :(得分:1)
就像提到的@SmokeyPHP一样,只需通过PHP输出文件而不是直接链接到它。
<?php
$file = 'monkey.gif';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>
http://php.net/manual/en/function.readfile.php
通过这种方式,您可以完全控制谁下载了什么。当然,根据文件大小,您可能希望将文件拆分为较小的块。您不希望每5秒在服务器内存中缓冲40 MB文件。对于更大的文件,您可以使用以下内容:
<?php
$file = fopen("file.dat", "r");
while (!feof($file)) {
echo fgets($file);
}
fclose($file);
?>
答案 2 :(得分:1)