我有一个脚本,在其中我上传pdf文件,用户可以下载。
现在我想以MB显示下载计数和文件大小。
我还需要一些帮助,以避免任何可能的攻击,因为我的脚本非常简单。
我的download.php如下所示
<?php
include("admin/config.php");
$id = $_REQUEST['id'];
$sql = "SELECT * FROM novels where id=$id";
$rs = mysql_query($sql);
$row = mysql_fetch_array($rs);
$pdf = $row['pdf'];
$name = $row['title'];
$path = 'admin/';
$file = $path.$pdf;
$filename = $pdf;
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename='$name-bookspk.net.pdf'");
header("Content-Length: filesize($file)");
readfile($file);
?>发布于 2013-12-17 10:48:46
对于下载计数,您可以保存到数据库。
$sql = "UPDATE `novels` SET `count`=`count`+1 WHERE `id`=".(int)$id;假设您有一个计数列
对于下载大小,您应该将filesize移出:
header("Content-Length: ".filesize($file));这是为了允许浏览器查看进度,如果您想要显示它,它是相同的,您可以将它存储在数据库中
$sql = "UPDATE `novels` SET `size`=".filesize($file)." WHERE `id`=".(int)$id;这应该在你上传的时候设置。
请记住,由于存在漏洞,所以要转义mysql查询。对于整数来说,由于可以强制转换(int),所以非常简单。
发布于 2013-12-17 10:47:17
尝试添加缓存头,这将减少文件从服务器下载的次数,如果您担心出现错误的话。
<?php
header("Expires: Sat, 26 Jul 2020 05:00:00 GMT"); // Date in the future
?>当文件上传时,您可能应该将文件大小存储在表中,这样您就可以通过一个对数据库的调用获取所有信息。
https://stackoverflow.com/questions/20632004
复制相似问题