仓酷云

标题: PHP编程:文件下载统计php编程 [打印本页]

作者: 深爱那片海    时间: 2015-2-4 00:20
标题: PHP编程:文件下载统计php编程
大部分语言的基础,不是说c有多好,而是c相对起手容易学,让你认为这个是编程语言,编程|统计|下载   如今有很多站点下载文件都供应了统计功效,本文会商的是若何利用php完成此功效,关于想埋没下载文件途径,防止用户直接利用url下载的编程者,本文也具有必定的参考价值。
完成情况:linux+apache+php+mysql

windows98+pws4+php+mysql

1、数据库布局

数据库中创立一个表,存储文件信息,包含文件编码、称号、下载途径、统计,响应的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);

2、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 "<br>";

}

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]”),因为读取文件办法绝对复杂,这里不再赘述。


  让好朋友来看看,嘿,看咱写的多棒,然后再在网上宣传一下。
作者: 灵魂腐蚀    时间: 2015-2-4 12:04
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
作者: 谁可相欹    时间: 2015-2-13 05:34
Ps:以上纯属原创,如有雷同,纯属巧合
作者: 乐观    时间: 2015-3-3 14:44
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者: 若相依    时间: 2015-3-6 11:20
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
作者: 第二个灵魂    时间: 2015-3-11 22:46
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
作者: 海妖    时间: 2015-3-19 15:12
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者: 冷月葬花魂    时间: 2015-3-22 00:51
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者: 变相怪杰    时间: 2015-4-3 23:29
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
作者: 飘灵儿    时间: 2015-4-7 14:34
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
作者: 老尸    时间: 2015-4-16 07:50
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
作者: 蒙在股里    时间: 2015-4-16 17:10
本文当是我的笔记啦,遇到的问题随时填充
作者: 愤怒的大鸟    时间: 2015-4-17 00:46
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
作者: 山那边是海    时间: 2015-4-21 19:13
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
作者: 精灵巫婆    时间: 2015-5-3 17:04
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
作者: 兰色精灵    时间: 2015-5-6 08:09
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
作者: 因胸联盟    时间: 2015-5-10 19:09
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
作者: 莫相离    时间: 2015-7-8 21:21
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
作者: 仓酷云    时间: 2015-7-10 07:32
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2