跟踪(直接)文件下载的最佳方法

2023-11-25

跟踪直接文件下载的最佳方法是什么?

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

最好的是安全且自己的托管解决方案。


放心使用:)

.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`)
)

下载.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;
}

?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

跟踪(直接)文件下载的最佳方法 的相关文章

  • 重新加载页面时删除哈希值?

    我使用哈希来切换我的图像滑块 当我重新加载页面并且哈希值设置为 e h 3 没有图片 当图库在几秒钟后自动滑动时 它显示下一个 所以几秒钟内什么也没有 有没有办法在加载页面时检查哈希并将其删除 我只想关心那些用散列为页面添加书签的人 问候
  • WordPress 子主题 -functions.php 复制 - 无法“重新声明”

    我正在使用带有儿童主题 starkers child 的 Starkers 我需要编辑functions php来声明一个菜单 所以我复制了functions php JS文件夹和external文件夹 它们都在functions文件中的某
  • Symfony/Form:函数 DoctrineType::__construct() 的参数太少

    我有一个奇怪的错误 我在自己的系统中实现了 Form 组件 我在那里创建了一个 FormType 其中使用 EntityType 作为字段 每次我想用 formBuilder 创建表单时 它都会抛出以下错误 Fatal error Unca
  • 计算帖子中使用 WordPress 短代码的次数

    我有以下 WordPress 短代码功能 function wp shortcode static i 1 return i i return return add shortcode shortcode wp shortcode 这很好用
  • 不区分大小写的 array_unique

    我正在尝试编写几行代码来创建一个不区分大小写的数组唯一类型函数 这是我到目前为止所拥有的 foreach topics as value lvalue strtolower value uvalue strtolower value if
  • 检测 Webkit/Chrome 中 HTML5 数字控件更改的事件?

    HTML5 为我们提供了一些新的输入元素 例如
  • 如何通过开始索引和结束索引提取子字符串?

    str HelloWorld sub substr str 3 5 echo sub prints loWor 我知道 substr 采用第一个参数 第二个参数是开始索引 而第三个参数是要提取的子字符串长度 我需要的是通过提取子字符串起始索
  • POSTed 数组保留其值

    今天 我注意到我的一个 WordPress 安装的行为方式非常奇怪 每当我从仪表板更新帖子时 它的一些额外输入都会保留它们已有的值 所有这些都是多维数组 例如 post php post 123 action 编辑
  • Bootstrap 4 移动导航栏消失

    我刚刚从 Bootstrap 3 转换为 Bootstrap 4 但我的移动导航栏出现问题 使用切换按钮展开导航栏时 导航消失 我不明白为什么会发生这种情况 导航栏下方有一个大屏幕 但整个移动导航向上移动 如下面的 gif 所示 以下是导航
  • 如何处理致命错误:cURL错误7:无法连接到xxxx端口443

    我有一个连接到第三方 API 的脚本 它是并且应该在 24 7 不间断循环上运行 我在重新启动循环之前在最后使用睡眠 问题是 有时第三方 API 会被拒绝 或者连接会因以下错误而中断 致命错误 未捕获的异常 GuzzleHttp Ring
  • PHP 使用主键和辅助键对多维数组进行排序[重复]

    这个问题在这里已经有答案了 如何按主键和辅助键对多维数组进行排序 例如 假设有以下数组 result array result 0 prio 1 result 0 date 2010 02 28 result 0 post February
  • 从 URL 任何文件类型创建图像

    我知道imagecreatefromgif https www php net manual en function imagecreatefromgif php imagecreatefromjpeg https www php net
  • 使用多个 WHERE 子句更新 Codeigniter 中的批次

    我查看了 CI 用户指南来了解如何处理update batch 并且它似乎只接受一个索引来匹配要更新的行 但在我的例子中 我需要指定两个索引 例如lang and id page我一起用作索引 这样的lang en id page 115是
  • 从字节数组设置 img src

    我需要设置img src我在对象中拥有的字节数组的属性 img
  • 轮播滑动(未滑动)事件上的火灾事件,Bootstrap 3

    Bootstrap 2 似乎可以很好地处理幻灯片事件 请参阅这个问题 https stackoverflow com questions 9651466 how to attach slide slid events to the boot
  • Symfony VS CakePHP:哪一个最接近 PHP [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我主要是一名 Rails 开发人员 但有时 我必须使用 PHP 进行编码 因为 stackoverflow com更喜欢可以回答的问题 我想知道
  • 从 $i 获取值,顺序被打乱

    for i 0 i lt count name i some output ommited td td
  • 如何缩短 PHP if 语句?

    我有一个 if 语句 我需要将单个字符串与许多不同的选项进行比较 我在下面发布的代码非常清楚地表明了我的意思 我知道有两种方法可以做到这一点 但另一种甚至更长 那么 是否有任何函数可以以更短的方式实现类似的功能 我的要求可能看起来很愚蠢 但
  • 如何在不更改地址栏中的 URL 的情况下重定向到不同的域?

    我想重定向自 域名1 com 照片 To 域名2 com 照片 我希望地址栏中的 URL 仍显示为 域名1 com 照片 有没有办法只使用 htaccess 来做到这一点 Note 我的domain1 com htaccess 文件目前完全
  • 通过 Facebook 图 api 点赞帖子

    你好 我对 facebook PHP SDK 没有什么问题 我想通过 facebook PHP SDK 点赞帖子或其他内容 我正在执行此代码 我认为它应该是正确的 但显然它不起作用 给定的错误代码是的 PHP SDK不知道这种POST请求

随机推荐

  • 从一个数据库表复制到另一个 C#

    使用 C vs2005 我需要将表从一个数据库复制到另一个数据库 两个数据库引擎都是 SQL Server 2005 对于远程数据库 源 我只有对存储过程的执行访问权限才能获取我需要在本地带来的数据 我对本地数据库有更多的控制权 因为它由需
  • 如何在 MonoTouch 中将 NSHttpCookie 转换为 System.Net.Cookie?

    我有一个 MonoTouch iPhone 应用程序 它通过 Azure 访问控制服务进行联合登录 登录是通过嵌入式 UIWebView 浏览器完成的 登录完成后 我想将 cookie 传输到我的应用程序中 我可以访问 NSHttpCook
  • 如何使用 Django 后台任务初始化重复任务?

    我正在开发一个 Django 应用程序 它从 dropbox 读取 csv 文件 解析数据并将其存储在数据库中 为此 我需要后台任务来检查文件是否被修改或更改 更新 然后更新数据库 我试过了 Celery 但无法使用 django 配置它
  • CP 求解器可以在特定点初始化吗?

    我正在使用 CP Sat 求解器来优化我正在制定的时间表 然而 现在这个问题需要很长时间才能解决 是否可以使用旧结果作为求解器的种子 作为起点 以减少找到最佳结果所需的时间 看看这个解决方案提示示例 https github com goo
  • 如何在 OSX El Capitan 上运行 Haskell

    我昨天刚刚升级到 Mac OSX El Capitan 发现我用来在终端上运行 Haskell 的方法不再起作用了 我曾经通过输入在终端上运行 Haskellcd the path where my hs file is in 然后输入gh
  • 为什么 C# 对 ushort 上的模运算发出错误“无法隐式地将 int 转换为 ushort”?

    在另一个帖子中 有人问为什么要添加两个ushort值在 C 中引发错误 例如 ushort x 4 ushort y 23 ushort z x y ERROR cannot implicitly convert int to ushort
  • Scala 解析器标记分隔符问题

    我正在尝试为下面的命令定义语法 object ParserWorkshop def main args Array String ChoiceParser todo link todo to database ChoiceParser to
  • 在 Linq 查询中调用类方法

    我有一个名为 GetAge DateTimebirthDay 的方法 我想在 Linq 查询中通过传递生日来使用此方法 并根据返回的年龄值需要执行一些逻辑 我想要以下 LINQ 格式的查询 from customer in contetx
  • 迭代@IntDef、@StringDef或任何@Def类中的值

    考虑这个类 public class MyClassOfMystery public static final int NO FLAGS 0 public static final int FIRST FLAG 1 public stati
  • Galaxy S4 上的浮动触摸

    三星 Galaxy S4 有 浮动触摸 功能 即使没有触摸屏幕也可以检测到手指 我想在按钮上触发一个事件 btn1 当手指经过时将其悬停 我尝试使用OnHoverListener but onHover当MotionEvent is Mot
  • 如何撤消 Git 中最近的本地提交?

    我不小心提交了错误的文件Git 但尚未将提交推送到服务器 我如何撤消这些提交local存储库 撤消提交并重做 git commit m Something terribly misguided 0 Your Accident git res
  • Oracle:Order by Union 返回 ORA-00933:SQL 命令未正确结束

    我在同时使用 Oracle 的 union 和 order by 子句时遇到问题 我有两个复杂的查询 其中包含子查询 每个查询都有一个 order by 子句 我需要合并两者的输出并返回结果 当我运行它时 我收到错误 ORA 00933 S
  • 使用扩展语法创建数组

    这是我在 React 书中找到的一个 JavaScript 箭头函数 const createArray length gt Array length 为什么不简单地返回一个新数组呢 const createArray length gt
  • 从故事板中的外部 xib 文件加载视图

    我想在故事板中的多个视图控制器中使用视图 因此 我考虑在外部 xib 中设计视图 以便更改反映在每个视图控制器中 但是如何从故事板中的外部 xib 加载视图 这是否可能 如果不是这种情况 还有哪些其他替代方案可以满足上述情况 我的完整示例是
  • 从具有行优先顺序的数组创建特征矩阵

    我有一个双精度数组 我想使用 Eigen 库创建一个 4 4 矩阵 我还想指定数据按行优先顺序存储 我怎样才能做到这一点 我已尝试以下操作 但无法编译 double data 16 Eigen Matrix4d M Eigen Map
  • 在 python 中将 XML 编辑为字典?

    我正在尝试从 python 中的模板 xml 文件生成自定义 xml 文件 从概念上讲 我想读入模板 xml 删除一些元素 更改一些文本属性 然后将新的 xml 写入文件 我希望它能像这样工作 conf base ConvertXmlToD
  • file_get_contents 会正常失败吗?

    I need file get contents具有容错能力 例如 如果 url喂给它返回一个404 在它发出警告之前告诉我 这可以做到吗 任何使用 HTTP 包装器访问远程文件 就好像它是本地文件一样 的函数都会自动生成一个名为的本地变量
  • 在java文件外部定义内部类

    我想创建一个类 ClassB 作为内部类ClassA 但我想写在外面ClassA java file 我怎样才能做到这一点 这将是很多内部类 并且ClassA java文件将是enormous UPDATE我真正想做的是定义十个类 它们只能
  • 有没有办法为 Spring HATEOAS `ControllerLinkBuilder` 设置主机和端口?

    Spring HATEOAS 提供了方便ControllerLinkBuilder创建指向控制器方法的链接 这些方法将作为 href 添加到返回给客户端的 JSON XML 中 例如 resource add linkTo methodOn
  • 跟踪(直接)文件下载的最佳方法

    跟踪直接文件下载的最佳方法是什么 Google Analytics 仅适用于 JavaScript 无法跟踪直接文件下载 最好的是安全且自己的托管解决方案 放心使用 htaccess RewriteEngine on RewriteRule