中国设计联盟
联网
平面设计 画册 VI欣赏 包装 CG-插画 搜索 个人网页 Alexa排名 CSS 建站资源 下载专区 JS特效 品牌服装 服装院校 专题欣赏 SEO 图标欣赏 专题
网站建设 域名注册 虚拟主机 广州网站设计 域名注册 广州网站建设 上海网站建设 虚拟主机 广州网页设计  虚拟主机 域名注册 acg王国 ACG玩家
求创科技
网站建设
中国福网
招聘求职
中国互联
艺魂宝库网
中资源
当前位置:网络学院首页 >> 编程开发 >> php >> 文件下载统计PHP编程

文件下载统计PHP编程

来源:中国设计秀    作者:    点击:15     加入收藏    发表评论
0
顶一下

    现在有许多站点下载文件都提供了统计功能,本文讨论的是如何使用php
实现此功能,对于想隐藏下载文件路径,避免用户直接使用url下载的编程
者,本文也具有一定的参考价值。
  实现环境:Linux+Apache+Php+Mysql
  Windows98+PWS4+Php+Mysql
  一、数据库结构
  数据库中创建一个表,存储文件信息,包括文件编码、名称、下载路
径、统计,相应的sql文件内容如下:

  CREATE DATABASE dl_db;
  CREATE TABLE dl_file (
  id varchar(6),
  name varchar(50),
  url varchar(200),
  count bigint(10)
  );
  INSERT INTO dl_file VALUES( '000001', 'test', 'test.zip', 0);
  INSERT INTO dl_file VALUES( '000002', 'tif', 'download/123.tif', 0);
  二、 php编程
  1、 函数文件
  函数文件包括数据库连接初始化函数和提示信息显示函数。
  dl_func.php3:
  <?
   //初始化数据库连接的程序
  function dl_dbconnect(){
  error_reporting(1+4); //禁掉warning性错误
  $dl_in=0;
  $dl_in=mysql_connect("localhost:3306","root","123456");
  if(!dl_in) { //如果连接失败,退出
  echo "数据库无法连接";
  exit;
  }
  mysql_select_db("dl_db",$dl_in);
  return $dl_in;
  }
  //显示提示信息的函数
  function infopage($strInfo){
  echo "<script language='Javascript'>";
  echo " window.alert('$strInfo');";
  echo " history.back();";
  echo "</script>";
  }
  ?>
  2、 下载连接页面
  下载连接页面从数据库读取下载文件信息并显示。
  filelist.php3:
  <html>
  <head><title>文件下载</title>
  <script language="Javascript">
  function newopen(url){
  window.open(url,"_self");
  return;
  }
  </script>
  </head>
  <?
  require("dl_func.php3");
  $dl_in=dl_dbconnect();
  $strQuery="select * from dl_file order by id";
  $dl_res=mysql_query($strQuery,$dl_in);
  while($arr_dlfile=mysql_fetch_array($dl_res)){
  echo "<a href="Javascript:newopen('filedown.php3?id=$arr_dlfile[id]')
">";
  echo "$arr_dlfile[name]";
  echo " ";
  echo "(下载次数:$arr_dlfile[count])";
  echo "";
  }
  mysql_close($dl_in);
  ?>
  </html>
  3、 下载页面
  当文件存在时,下载页面转到要下载的文件,如果发生错误,则显示提示信息。
  filedown.php3:
  <?
  require("dl_func.php3");
  $dl_in=dl_dbconnect();
  $strQuery="select url from dl_file where id='$id'";
  $dl_res=mysql_query($strQuery,$dl_in);
  if(!($arrfile=mysql_fetch_array($dl_res))){ //选择结果为空
  infopage("错误的id号");
  exit;
  }else{
  $arr_temp=split("/",$arrfile[url]);
  $filename=$arr_temp[sizeof($arr_temp)-1];
  if(strlen(trim($filename))==0){//文件名称为空
  infopage("错误的文件");
  exit;
  }else{
  $strQuery="update dl_file set count=count+1 where id='$id'";
  mysql_query($strQuery,$dl_in);
  header("Content-type: application/file");
  header("Content-Disposition: attachment; filename=$filename");//缺省时
文件保存对话框中的文件名称
  header("location:$arrfile[url]");
  //echo "this is test for echo-download";
  }
  }
  mysql_close($dl_in);
  ?
   实现的原理是filelist.php3显示所有文件的连接,然后根据传递的id来得到文件的名称和路径,通过重新定位来下载文件。以上程序笔者测试过,运行正常。
 
  文件url可以是本地的,也可以是其他服务器上的。
 
  如果文件内容存储在数据库中,或者文件没有在http和ftp的路径下,解决的方法可以利用将文件的内容echo出来取代header("location:$arrfile [url]"),由于读取文件方法相对简单,这里不再赘述。

2007-06-29 11:34:00    出处:
Google
热点文章/相关文章
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明 | 网站公告 | 友情链接 | 留言 | 旧版入口