|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
大部分语言的基础,不是说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]”),因为读取文件办法绝对复杂,这里不再赘述。
让好朋友来看看,嘿,看咱写的多棒,然后再在网上宣传一下。 |
|