加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 跟踪(直接)文件下载的最佳方式

发布时间:2020-12-13 22:09:01 所属栏目:PHP教程 来源:网络整理
导读:跟踪直接文件下载的最佳方法是什么?我找到了一些解决方案,例如: http://www.gayadesign.com/diy/download-counter-in-php-using-htaccess/ 但它对我不起作用,当我试图下载文件时我只得到一个空白页面我不知道它是否足够安全…… Google Analytics仅适用于j
跟踪直接文件下载的最佳方法是什么?我找到了一些解决方案,例如:

http://www.gayadesign.com/diy/download-counter-in-php-using-htaccess/

但它对我不起作用,当我试图下载文件时我只得到一个空白页面我不知道它是否足够安全……

Google Analytics仅适用于javascript,无法跟踪直接文件下载.

Best是一个安全且自己的托管解决方案.

解决方法

随意使用:)

的.htaccess:

RewriteEngine on    
RewriteRule ^(.*).(rar|zip|pdf)$http://xy.com/downloads/download.php?file=$1.$2 [R,L]

MySQL的:

CREATE TABLE `download` (
    `filename` varchar(255) NOT NULL,`stats` int(11) NOT NULL,PRIMARY KEY  (`filename`)
)

的download.php

<?php

mysql_connect("localhost","name","password")
or die ("Sorry,can't connect to database.");
mysql_select_db("dbname"); 
$baseDir = "/home/public_html/downloads"; 
$path = realpath($baseDir . "/" . basename($_GET['file'])); 

if (dirname($path) == $baseDir) {
if(!is_bot())
mysql_query("INSERT INTO download SET filename='".mysql_real_escape_string(basename($_GET['file']))."' ON DUPLICATE KEY UPDATE stats=stats+1");


header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=" . basename($_GET['file']));
header("Content-Length: ".filesize($path));
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: binary");
ob_clean();
ob_end_flush();
readfile($path);    
}

function is_bot()
{

    $botlist = array("Teoma","alexa","froogle","Gigabot","inktomi","looksmart","URL_Spider_SQL","Firefly","NationalDirectory","Ask Jeeves","TECNOSEEK","InfoSeek","WebFindBot","girafabot","crawler","www.galaxy.com","Googlebot","Scooter","Slurp","msnbot","appie","FAST","WebBug","Spade","ZyBorg","rabaz","Baiduspider","Feedfetcher-Google","TechnoratiSnoop","Rankivabot","Mediapartners-Google","Sogou web spider","WebAlta Crawler","TweetmemeBot","Butterfly","Twitturls","Me.dium","Twiceler");

    foreach($botlist as $bot)
    {
        if(strpos($_SERVER['HTTP_USER_AGENT'],$bot)!==false)
        return true;    // Is a bot
    }

    return false;
}

?>

来源 – gayadesign.com

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读