文件下载统计PHP编程

 更新时间:2016年9月20日 19:02  点击:1459
    现在有许多站点下载文件都提供了统计功能,本文讨论的是如何使用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:
  <?
   file://初始化数据库连接的程序
  function dl_dbconnect(){
  error_reporting(1+4); file://禁掉warning性错误
  $dl_in=0;
  $dl_in=mysql_connect("localhost:3306","root","123456");
  if(!dl_in) { file://如果连接失败,退出
  echo "数据库无法连接";
  exit;
  }
  mysql_select_db("dl_db",$dl_in);
  return $dl_in;
  }
  file://显示提示信息的函数
  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))){ file://选择结果为空
  infopage("错误的id号");
  exit;
  }else{
  $arr_temp=split("/",$arrfile[url]);
  $filename=$arr_temp[sizeof($arr_temp)-1];
  if(strlen(trim($     IE频道文件实际上就是一个纯文本文件,有与html类似的语法格式, 以cdf为扩展名。所以要建立频道文件不需要任何专门的编辑工具,仅仅 windows 95/98/2000下的notepad就足够了。
  注:由于编码的关系,“<>”用“[]”代替。
    下面是完整的频道文件举例:
      +++++++++++++++++++++++++++
        [Channel HREF="http:///htmldata/2005-02-24/default.htm" SELF="soim.cdf"
        BASE="http://www.soim.com/"]
      [Title]索易电子刊物[/Title]
      [Logo HREF="http:///htmldata/2005-02-24/soimcdf.gif" Style="IMAGE" /]
      [Logo HREF="http:///htmldata/2005-02-24/soimicon.gif" Style="Icon" /]
      [Abstract]索易电子刊物——soim.com[/Abstract]
    [Item HREF="http:///htmldata/2005-02-24/subscribe.htm" Precache="yes"]
    [Title]索易邮件订阅[/Title]
    [Abstract]索易在线邮件订阅[/Abstract]
    [Logo HREF="http:///htmldata/2005-02-24/subscribe.gif" Style="icon" /]
    [/Item]
    [Item HREF="http:///htmldata/2005-02-24/software.htm" Precache="yes"]
    [Title]共享软件联盟[/Title]
    [Abstract]索易共享软件联盟[/Abstract]
    [Logo HREF="http:///htmldata/2005-02-24/software.gif" Style="icon" /]
    [/Item]
        [/Channel]
    +++++++++++++++++++++++++++++++++++++++++++++++++++
  说明:
  频道文件的正文都是以[channel ......]开头,并以[/channel]结 尾的。 就像在html语言中是以[html]开头,以[/html]结尾的一样。
  在第一行[channel ......]中,
    href=http:///htmldata/2005-02-24/"......"标明此频道所指向的主网页文件名;
    self="......"是频道文件自身的文件名;
    base="......"频道文件默认的基本路径(URL),在频道文件中的
    “HREF”全部使用绝对路径的话,这项是可以省略的。
  第二行[title]......[/title],填写频道的标题。
  在第三,四行[logo ......]中 ,
    href=http:///htmldata/2005-02-24/"....."处填写图案的文件名,
    style="....."处填写对图案的描述,image表示是位于频道栏处的图标(大小为:80*32象素);icon表示频道文件的图符(大小为:32*32象素)。 注意:末尾的“/”不要漏掉。
  第五行[abstract]......[/abstract],填写对频道内容的描述。
  第六行[item ......],定义子频道。子频道可以是主页面下的一 些主要栏目的链接。其中href=http:///htmldata/2005-02-24/"......"处填写子频道所指向的网页文件名;Precache="......"是判断否对子频道作缓存,回答只有“yes” 或“no”     Jakob Nielsen是 Sun Microsystems 的杰出科学家,他已写了好几本关于可用性的书,是指导人们在 Web 上如何阅读和查看信息方面的行家。他认为任何为 Web 写的文章在几个重要方面应与为印刷媒体而写的同一主题的文章有所不同。首先,Web 文章应该约为印刷文章长度的一半。在他的研究中,Nielsen 发现人们在 Web 上阅读时的注意力集中时间远比阅读报刊文章短。
  Web 写作是一项新技能,如果您真地想使人们注意您在 Web 上发布的信息,那就有必要学会用一种新的方法进行写作。
  由于大多数人已为印刷材料写作多年,他们发现打破旧习惯是很难的。但 Nielsen 认为写 Web 文章时改变写作方式是很必要的。他建议,为 Web 写的所有东西都应简洁明快,以大纲形式提出,并且不要使用所有商业措辞。
  使所写内容便于浏览 使用突出显示的文字,将段落限制为表达一个中心思想,并将所有内容全部放入公告牌和列表中。 多增加一些内容,少一些华而不实的东西
  将 Web 站点中的更多空间留给要发布的实际文章和其他内容,将较少空间留给导航菜单、广告以及图形。他还说,许多站点只使用每个屏幕像素的 20% 来刊登实际站点内容。
  建立可信度
  研究表明人们认为那些看起来象专业设计的 Web 站点上的信息更为可靠。编辑中仔细删除排版错误和经常更新站点上的信息也能提高可信度,因为大多数人认为新的信息比较可信。添加一些与其他 Web 站点的链接也能帮助提高可信度,因为这可使您的站点似乎与其他 Web 的连接更紧密。
    减少商业味道
  Web 用户讨厌那些免费的,自我吹嘘的商业信息。Nielsen 说,“他们真正想要的是铁的事实,” “而不是那些自吹自擂的信息。然而,如果您在 Web 上浏览一下,就知道所有站点都是这么做的。”如果您抛弃那些商业化的讨论,人们就不必再在自己的头脑中思考这些内容,他们更可能会继续读下去。
  采用倒金字塔形式
  在写 Web 文章时,一般采用倒金字塔形式。假定大多数人在读到结尾前就放弃,所以把结论放在开头,然后首先列出最重要的信息。
  用超级链接缩短长度
  由于文章力求简洁,可以用超级链接来缩短文章长度。不必向您的读者解释那些不重要的想法,可以在这些文字中添加超级链接,以转到其他辅助条目、相关文章以及感兴趣读者可从中获取信息的其他站点。超级链接是缩短白皮书和其他长科技文章的有效途径。要参看 Nielsen 如何在他的文章中使用超级链接,请参阅他关于 Web 写作方面的短评 (http://www.useit.com/papers/webwriting/)。
  去掉不必要的图形
  由于 Web 受下载时间的限制,所以不要让您的读者等待下载图形和大页面。Nielsen 说,大多数人如果等待页面出现的时间超过一秒钟,就会变得焦急不安,除非对他们来说是非常重要的信息,否则他们的等待时间不会超过 10 秒钟。在 Web站点(http://www.useit.com/papers/responsetime.html) 上可以获得 Nielsen 关于此主题研究的详细说明。
  并不是信息越多越好
  请记住:真正重要的不是为 Web 读者提供更多信息,而是为他们提供更简洁的信息。那么究竟多少才是过多了呢?这主要取决于对象的情况,但作为一条通用的规则,Nielsen 警告我们:不应让您的读者在读到文章末尾前向下单击三屏以上。
  结论
  迟早会有一天,几乎每一位科技人员都有可能不得不写一篇科技文章,或者讲述他们如何进行研究工作。在内部或外部 Web 站点上发布信息的可能性总是有的。如果您想要人们真正地阅读您所写的东西,就请注意 Nielsen 所说的内容。


    线条是网页中使用得比较多的一种 HTML 对象,在 HTML 语言中提供了一个 <HR> 的标签,也就是水平直线。但由于这个标签的局限性使我们在制作网页时遇到了一些麻烦,比如:线条的颜色以及怎样制作纵向的线条。在这里,笔者就在网页中制作线条的这两个方面的技巧介绍一点自己的心得。
  为了顾及各种浏览器之间的兼容性,网页制作者在制作网页的时候常常需要考虑标签的各种属性在每一种浏览器中是否能够正确的显示。其中就有一个水平线的颜色属性问题。我们都知道
<HR> 标签具有一个 Color 属性,例如我们要制作一条红色的线条就可以用这样的代码:
<hr color="#FF0000"
noshade>
  当你在IE中浏览这一段代码时你能得到一个你希望的红色线条,可是如果你的浏览器是 Netscape 的话,那么你看到的只是一个灰色的线条,因为 Netscape 根本就不支持 HR 的 Color 属性。我们该怎么办呢?


  1、使用表格
  现在流行的网页制作中我们大多数是用表格来规划一个网页的基本布局,因此使用表格的单元格来制作线条不会给你增加太多的麻烦。
  1. 首先我们需要将表格的单元格边距属性(cellpadding)设置为 0 。如:<table cellpadding="0">,注意:只有将这个边距属性设置为 0 你才能制作一个小于 4 个象素的线条。因为 HTML 中 Cellpadding的默认值是 2 个象素,上下两个边距相加就是 4 个象素。如果不设置 Cellpadding 属性哪怕是你将这个单元格的高度(Height)设置为0 ,这个单元格的实际高度仍然是 4 个象素。
  2. 将单元格的高度(Height)设置为你希望得到的线条的高度。
  3. 设置单元格的背景颜色,如:#FF0000。到这一步还没有完,如果你这时在 Netscape中来浏览这个表格的话,你仍看不到任何颜色。下面就进行关键性的一步。
  4. 利用图像制作软件制作一个 1 * 1 的 GIF格式的图像(一个点)。这里又有一个技巧,你可以将这个图像设置为透明的,这样你就可以利用这个“点”来制作任何颜色的线条,而不需要为每一种颜色的线条都制作一个这样的“点”。 这时你再用 Netscape 浏览这个表格你就可以看到一个红色的线条了。也就是说在 Netscape 中当一个单元格中什么也没有的时候,无法显示这个单元格的背景色,而只要这个单元格中有一点东西,就可以显示单元格的被景色。笔者也不知道什么原因但事实如此。使用这一种方法你也可以制作纵向的线条。你只是需要将上述步骤的第2步的宽度改为你想要的线条的宽度,然后再设置高度或者调整这个单元格的行跨度以达到你想要的长度。这需要你在网页制作过程中根据自己的实际要求来做出相应的处理。顺便说一句,以前《电脑报》登过一篇文章说可以使用HR的 Size 属性来制作纵向线条,但我在实际中发现这种方法只能制作 100 个象素长的纵向线条。




<
    Meta标签放在每个网页的<head>...</head>中,我们大家比较熟悉的如:
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">说明编辑工具;
<meta name="KEYWORDS" content="...">说明关键词;
<meta name="DESCRIPTION" content="...">说明主页描述;
<meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80">和
<meta http-equiv="Content-Language" content="zh-CN">说明所用语言及文字...
   可见META有两种,name和http-equiv。
name主要用于描述网页,对应于content,以便于搜索引擎机器人查找、分类(目前几乎所有的搜索引擎都使用网上机器人自动查找META值来给你的网页分类)。这其中最重要的是DESCRIPTION(你的站点在引擎上的描述)和KEYWORDS(搜索引擎籍以分类的关键词),应该给你的"每一页”都插入这两个META值。当然你也可以不要搜索引擎检索,可用:
<meta name="ROBOTS" content="all | none | index | noindex | follow | nofollow"> 来确定:
设定为"all"时文件将被检索,且页上链接可被查询;
设定为"none"则表示文件不被检索,而且不查询页上的链接;
设定为"index"时文件将被检索;
设定为"follow"则可查询页上的链接;
设定为"noindex"时文件不检索,但可被查询链接;
设定为"nofollow"则表示文件不被检索,但可查询页上的链接.
http-equiv顾名思义相当于http文件头的作用,可以直接影响网页的传输。比较直接的
例子如:
1、自动刷新,并指向新网页
<meta http-equiv="Refresh" content="10; url= http://yourlink"'>http://yourlink"> 10秒后刷新到http://yourlink;
2、网页间转换时加入效果
<meta http-equiv="Page-Enter" content="revealTrans(duration=10, transition=50)">
<meta http-equiv="Page-Exit" content="revealTrans(duration=20, transition=6)">
加在一个网页中,进出时有一些特殊效果,这个功能即FrontPage 98的Format/PageTransition.不过注意所加网页不能是一个Frame页;
3、强制网
[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • C#路径,文件,目录及IO常见操作汇总

    这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • C#使用StreamWriter写入文件的方法

    这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25
  • ant design中upload组件上传大文件,显示进度条进度的实例

    这篇文章主要介绍了ant design中upload组件上传大文件,显示进度条进度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29
  • php实现文件下载实例分享

    举一个案例:复制代码 代码如下:<?phpclass Downfile { function downserver($file_name){$file_path = "./img/".$file_name;//转码,文件名转为gb2312解决中文乱码$file_name = iconv("utf-8","gb2312",$file_name...2014-06-07
  • 查找php配置文件php.ini所在路径的二种方法

    通常php.ini的位置在:复制代码 代码如下:/etc目录下或/usr/local/lib目录下。如果你还是找不到php.ini或者找到了php.ini修改后不生效(其实是没找对),请使用如下办法:1.新建php文件,写入如下代码复制代码 代码如下:<?phpe...2014-05-31
  • C# 向二进制文件进行读写的操作方法

    该例子使用 BinaryStream 和 BinaryWriter 对二进制文件进行读写操作先上代码再根据我理解的所分享给各位朋友...2020-06-25