功能控制完备的PHP上载程序 |
| 时间:2005-11-24 21:06:41 来源: 作者: |
$callback);
exit;
};
##上传完毕
##删除管理
if($actiontype=="del"){
if(!($actionid && $username && $password )) {
echo "<html>操作ID、用户名、密码缺一不可!
<a href=javascript:window.history.back()>点这里返回修改</a></html>";
exit;
}
if(!get_config($configureFile,$actionid,$actiontype))
{echo "<html>不合法的操作ID。<a href=javascript:window.history.back()>
点这里返回修改</a></html>";exit;}
if(!getUserRight($username,$user)){exit;}
get_config($configureFile,$actionid,"upload");
?>
<html>
<head>
<title>文件管理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<SCRIPT LANGUAGE="JavaScript">
<!--
function MM_goToURL() { //v3.0
var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
for (i=0; i<(args.length-1); i+=2)
eval(args[i]+".location='"+args[i+1]+"'");
}
function mydelfun(fileName) {
answer=confirm('您确定要删除'+fileName+'文件吗?');
if(answer == 1){
MM_goToURL('parent','upfile.php?actid=<? echo $actionid;?>
&username=<? echo $username;?>&20041010132811.htm='+fileName+'&sec=<?
echo $password;?>');return document.MM_returnValue;}
else{
}
}
//-->
</SCRIPT>
<body bgcolor="#FFFFFF">
<table width="80%" border="0" cellspacing="0" cellpadding="1" align="center">
<tr>
<td width="25%"> </td>
</tr>
<tr>
<td width="25%">操作ID:<?echo $actionid;?></td>
</tr>
<tr>
<td width="25%">用户名:<?echo $username;?></td>
</tr>
<tr>
<td width="25%">当前目录:<?echo $targetDir?></td>
</tr>
<tr>
<td width="25%"> </td>
</tr>
</table>
<table width="95%" border="0" cellspacing="0" cellpadding="4" align="center">
<tr bgcolor="#000066">
<td width="46%"><font color="#FFFFFF">文件名称</font></td>
<td width="20%"><font color="#FFFFFF">文件大小</font></td>
<td width="22%"><font color="#FFFFFF">创建时间</font></td>
<td width="12%" align="center">
<font color="#FFFFFF">有关操作</font></td>
</tr>
</table>
<table width="95%" border="0" cellspacing="0"
cellpadding="3" align="center">
<?
$handle=opendir($targetDir."/");
$maxLength=1;
while ($file = readdir($handle)) {
if(is_file($targetDir."/".$file)){
if($maxLength%2) {$mbgc="#CCCCCC";}else{$mbgc="#ffffff";}
$maxLength++;
echo "<tr bgcolor="$mbgc"><td width="46%">$file</td>
<td width="20%">";
echo filesize($targetDir."/".$file);
echo "</td><td width="22%">";
$filemod = filemtime($targetDir."/".$file);
$filemodtime = date("Y-m-d H:i:s", $filemod);
print($filemodtime);
echo "</td><td width="12%" align="center">
<a href=javascript:mydelfun('$file');>删除</a></td></tr>";
}
}
closedir($handle);
?>
</table>
<table width="80%" border="0" cellspacing="0"
cellpadding="0" align="center">
<tr>
<td> </td>
</tr>
<tr align="center">
<td>本操作ID的 <a href=upfile.php?actid=<?
echo $actionid?>&type=up" target="_blank">上传日志</a>
<a href=upfile.php?actid=<? echo $actionid?>&type=del"
target="_blank">管理日志</a></td>
</tr>
</table>
</body>
</html>
<?
exit;
};
##删除管理完毕
##删除文件操作
if($sec){//
get_config($configureFile,$actid,"upload");
unlink($targetDir."/".$20041010132811.htm);
$message=date("Y-m-d H:i:s")."
remote_ip:".$REMOTE_ADDR." UserName:".$username."
delete FileName:".$20041010132811.htm."";
putLog($actid,$message,"b");
header("location:upfile.php?username=
$username&actionid=$actid&actiontype=del&password=$sec");
exit;
}
if($type){}else{exit;};
function showLog($actid,$flag="a"){
$logfile="./log/".$actid.$flag.".log";
if(!file_exists($logfile)){echo "该操作ID暂时没有任何日志!";};
$logarray=file($logfile);
while (list($key,$value) = each($logarray)) {
echo $value."<br>";
}
}
if(trim($type)=="del"){showLog($actid,$flag="b");}else{showLog($actid);};
//主程序结束
?>
|
■配置文件 config.inc.php
<?
####################################################################
#Project Name: Test
#Author :lanf
#Home Page: http://lanf.yeah.net
#E-mail:imbusy@263.net
#Time: 2001 . 9
####################################################################
[table up]
#id dir user max(kb) type check limit callback
fa001 /home/lanf/upload * 1900 * * * ./
#这就是说,标志为fa001的上传中,目标路径是/home/lanf/upload
(当然这需要赋予php在这个目录下写的权限),限定的操作用户是*
(表示任何人,当然你也可以限制为lanf,yy等等),每次上传的大小限制为1900KB,
类型为任何类型(*,当然你也可以限制为gif,jpg等后缀,用逗号分隔。
如果限制是gif或者jpg的话,系统自动读取若干字节检查文件类型是否为伪冒)。
check项为是否调用外部程序检验上传文件真伪,若不调用,直接写*,
调用直接写该文件绝对路径。
limit项是针对调用页的限制,不限制可以写*,限制的话,填写该主机域名或者ip地址,
可以支持192.*.*.*等区域授权方式。最后一项是返回页面,上传文件后调用哪个URL
(注意,填写的是url,确保系统路径不被泄漏)
[table del]
#id user
fa001 lanf
up lanf
#这个意思是说,操作id为fa001中上传的文件,只有lanf可以删除
?>
■调用页面
<html>
<head>
<title>文件上传</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF">
<table width="96%" border="1" align="center">
<form method="post" action="upfile.php"
name="upform" enctype="multipart/form-data" >
<tr>
<td>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="18%">操作ID</td>
<td width="63%">
<input type="text" name="actionid">
</td>
<td width="19%"> </td>
</tr>
<tr>
<td width="18%">用户名</td>
<td width="63%">
<input type="text" name="username">
</td>
<td width="19%"> </td>
</tr>
<tr>
<td width="18%">密 码</td>
<td width="63%">
<input type="password" name="password">
</td>
<td width="19%"> </td>
</tr>
<tr>
<td width="18%">本地文件</td>
<td width="63%">
<input type="file" name="userfile">
<input type="hidden" name="MAX_FILE_SIZE" value="2097152">
</td>
<td width="19%"> </td>
</tr>
<tr>
<td width="18%">目标文件</td>
<td width="63%">
<input type="text" name="newname">
(完全文件名,不填写缺省使用原名) </td>
<td width="19%"> </td>
</tr>
<tr>
<td width="18%"> </td>
<td width="63%">
<input type="checkbox" name="forceover" value="1" disabled>
如果目标文件重名强行覆盖(小心使用) </td>
<td width="19%"> </td>
</tr>
<tr>
<td width="18%"> </td>
<td width="63%">
<input type="radio" name="actiontype" value="upload" checked>
上传
<input type="radio" name="actiontype" value="del">
管理 </td>
<td width="19%"> </td>
</tr>
<tr>
<td width="18%"> </td>
<td width="63%">
<input type="submit" name="tok" value="确 定">
<input type="submit" name="reset" value="复 原">
</td>
<td width="19%"> </td>
</tr>
</table>
</td>
</tr> </form>
</table>
</body>
</html>
|
这个程序应该还算是未完成版本,即用户身份的验证(用户名秘钥)的代码还没有写,但是相信对任何一个稍微熟悉php的人来说这都是很普通的问题,大家可以根据自己的需要和条件重做验证身份函数getUserRight即可完成。使用的时候这三个文件应该放在对php来说是可写的目录即可(因为要生成log文件)。本系统所有程序包在本站源码世界提供下载。
|