这是关于使用php脚本从服务器下载文件的问题。当用户点击下载链接时,它处理为download.php
文件,并使用header
开始下载。使用php脚本下载文件,一次在
下载文件后,是download.php
文件中的一个功能,它从用户的账户更新mysql数据库中有关下载的文件和扣钱。一切正常。
现在,用户在PC上安装下载管理器时会出现问题。有时下载开始在浏览器和下载管理器中。因此,最后在数据库中有两个下载条目,并且两次从用户帐户中扣除了钱。
问题:有什么办法在时间只启动一个下载?或者任何其他方式来做这件事?
我提供给用户的下载链接。
<a href='download.php?id=1'>Download Test Video</a>
我用于下载文件的脚本。 (的download.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');
这可能会派上用场...... http://stackoverflow.com/questions/14233850/how-to-prevent-file-hotlink-from-internet-download-manager-idm ..我们的想法是阻止这些下载管理器..还有其他想法。但是,这是其中之一... – 2013-04-11 04:56:11
您是否对视频的每个下载付费?您最好拥有按次收费的视图并将其嵌入到您的网页中,不是吗?如果您对整个视频进行收费,只需让客户“购买”一个视频,然后根据需要多次下载(或对其设置限制) – 2013-04-11 04:57:25
不太确定您将如何为用户安装此设置,但我最近完成了类似的事情。当他们去下载时,会显示一个唯一的URL(下载/),他们将使用它。如果他们试图再次处理,则会使用前一个标记。当然,这只适用于活动会话时。 –
Dave
2013-04-11 05:02:21