这是关于使用 php 脚本从服务器下载文件的问题。当用户点击下载链接时,它会处理为download.php
文件,并使用header
它开始下载。
下载文件后,文件中有一个功能download.php
,它更新mysql数据库关于下载的文件并从用户帐户中扣款。一切正常。
现在,当用户在 pc 中安装了下载管理器时,就会出现问题。有时下载是在浏览器和下载管理器中开始的。因此,最后数据库中有两个下载条目,并且从用户帐户中扣除了两次钱。
问题:有没有办法一次只开始一次下载?或者任何其他方式来做这件事?
我提供给用户的下载链接。
<a href='download.php?id=1'>Download Test Video</a>
我用于下载文件的脚本。(下载.php)
$file = "c:/test.avi"; // $file = $_GET['id'];
$title = "Test Video";
header("Pragma: public");
header('Content-disposition: attachment; filename='.$title);
header("Content-type: ".mime_content_type($file));
header("Content-Length: " . filesize($file) ."; ");
header('Content-Transfer-Encoding: binary');
ob_clean();
flush();
$chunksize = 1 * (1024 * 1024); // how many bytes per chunk
if (filesize($file) > $chunksize) {
$handle = fopen($file, 'rb');
$buffer = '';
while (!feof($handle)) {
$buffer = fread($handle, $chunksize);
echo $buffer;
ob_flush();
flush();
}
fclose($handle);
} else {
readfile($file);
}
record_download('user id', 'file id');