首页 » 建站技术 » WordPress » 浏览内容

WordPress下载次数统计


2013-04-05 01:15:08 4,249 0 发表评论 字体: 作者:C.K.
标签: WordPress

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

有的时候需要对自己博客内的东西的下载次数进行统计:

使用插件,比如WP-DownloadManager。
使用短网址服务,比如国外的goo.gl, bit.ly都提供了短网址的跳转次数和来路等等详细信息的记录。

  不过仅仅是简单的统计用插件显得有点儿大材小用;短网址嘛,身在景德镇,无形的长城使得这些服务的稳定性不能保证。所以还是自己实现一个简单的下载次数统计吧:实际上就是利用以下的PHP文件做跳板,每当链接点击后对数据库进行操作,相应文件的下载次数加一,再跳转到真实文件的地址,产生下载行为,和大部分下载站的方式是一样的。虽然目前还不太完善吧,功能实现还是没问题的~

  把下面这个代码存为dl.php放到网站的根目录(和wordpress根目录同级)。

<?php
  •  
  • //博客的首页地址,无需http://
  • $blogURL = 'example.com';
  •  
  • //包含WP文件,声明wpdb全局变量
  • include_once('wp-config.php');
  • include_once('wp-includes/wp-db.php');
  • global $wpdb;
  •  
  • //获取文件地址参数
  • $fileURI = $_GET['file'];
  • //获取文件名,如何防止SQL注入还请高手指教
  • $filename = preg_replace("/.*\/(.*)/",'$1',$fileURI);
  • //获取文件的相对路径
  • $filejudge = iconv('UTF-8','GB2312',preg_replace("/http:\/\/.*?\/(.*)/",'$1',$fileURI));
  •  
  • //判断Http请求来源,来自本站且有file值则继续。
  • if($fileURI && ((strpos($_SERVER['HTTP_REFERER'],$blogURL) || $_SERVER['HTTP_REFERER']=='') !== false)){
  •         if(file_exists($filejudge)){//判断文件是否存在,防止建立无用行。
  •             $tableRecord = $wpdb->query('Describe download_count ID');
  •             if($tableRecord == '0'){//没有表则新建download_count表
  •                 $wpdb->query('CREATE TABLE download_count(ID int AUTO_INCREMENT,filename varchar(255),count int,PRIMARY KEY (ID))default charset=utf8');
  •             };
  •             $lineRecord = $wpdb->query('SELECT ID FROM download_count where filename = "' . $filename . '"');
  •             if($lineRecord == ''){//表中无对应文件名则插入初始化行
  •                 $wpdb->query('INSERT INTO download_count(filename, count) VALUES("' . $filename . '","1")');
  •             }else{//有则为count加一
  •                 $rowCount = $wpdb->get_var('SELECT count FROM download_count where filename = "' . $filename . '"');
  •                 $rowCount++;
  •                 $wpdb->query('UPDATE download_count SET count = "' . $rowCount . '" where filename = "' . $filename . '"');
  •             };
  •         };
  •         header("Location: $fileURI");//重定向到真实文件地址,如果不存在则应返回404页面。
  •         exit;
  • }else{
  •     //来自站外或没有file值则跳转至首页
  •     header("Location: http://$blogURL/");
  •     exit;
  • };
  • ?>
  • <!DOCTYPE HTML>
  • <html dir="ltr" lang="zh-CN">
  • <head>
  • <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  • </head>
  • </html>
  •   如果我们想下载http://example.com/a.zip,那么写入下载地址的时候写为http://example.com/dl.php?file=http://example.com/a.zip即可。这样下载该文件时就可以在数据库内新建一个表download_count:以文件名作为filename的值,链接每点击一次,则count加1。本地WAMP调试正常。

      自动生成对应链接的方法有两种思路,任选其一:

      如果不想每次都得自己加前面的网址的话也不想对以前的文章进行修改的话,可以使用这段Javascript:

    //选择器根据主题模板替换
  • $('.entry-text a:not([href*="#more"])').each(function(){
  •     if($(this).children('img').length<=0){
  •     var href = $(this).attr('href');
  •     var pattern1 = /\.((7z)|(zip)|(rar)|(r\d\d)|(pdf)|(docx?)|(xlsx?)|(mp\d)|(js)|(swf)|(flv))+$/g;//允许自动添加的文件后缀
  •     var pattern2 = /(^https?:\/\/example\.com\/)|(^\/)/g;//替换为你的博客地址,只对站内文件操作。
  •     if(pattern1.test(href) && pattern2.test(href)){
  •         $(this).attr('href','http://example.com/dl.php?file=' + href);//替换为你的博客地址
  •     };
  •     };
  • });
  •   用短代码功能生成下载链接,并接显示下载次数,是最好的方法,放到主题functions.php内:

    function download_count($attrs, $url=null){
  •     global $wpdb;
  •     extract(shortcode_atts(array("title"=>""),$attrs));
  •     if($title==""){$title = $url;};
  •     $filename = preg_replace("/.*\/(.*)/",'$1',$url);
  •     $href = 'http://example.com/dl.php?file=' . $url;
  •     $count = $wpdb->get_var('SELECT count FROM download_count where filename = "' . $filename . '"');
  •     if(!$count){$count=0;};
  •     return '<a href="' . $href . '">' . $title . '</a> (下载 ' . $count .  ' 次)';
  •     }
  • add_shortcode('download','download_count');
  •   每次调用时使用[download title="下载点我"]http://example.com/abc.zip[/download]即可(不写title则显示链接地址),生成下载地址的右边会显示当前下载的次数。

    网站统计 Statistics

    • 创建时间: 2005年1月3日 距今5041 天
    • 日志总数: 2461
    • 评论总数: 630
    • 标签总数: 654
    • 链接总数: 273
    • 最后更新: 2018-8-31 17:57:04
    • 您是本站第 14061230 位访客

    广告区 Guǎng Gào