### 功能控制完备的 PHP 上载程序(2)

$canshuZoneId=1;
}else{
if($canshuZoneId==0) {
continue;
}else{
break;
}
}
}else{
if($canshuZoneId==0) continue;
}//区域选择结束
$id_temp=substr($value,0,$keylength);
if($id_temp==$actionID){
//开始取参数
$callback=trim(strrchr($value, " "));
$value=trim(substr($value,0,strlen($value)-strlen($callback)));
$limitSite=trim(strrchr($value, " "));
$value=trim(substr($value,0,strlen($value)-strlen($limitSite)));
$checkFile=trim(strrchr($value, " "));
$value=trim(substr($value,0,strlen($value)-strlen($checkFile)));
$fileType=trim(strrchr($value, " "));
$value=trim(substr($value,0,strlen($value)-strlen($fileType)));
$maxLength=trim(strrchr($value, " "));
$value=trim(substr($value,0,strlen($value)-strlen($maxLength)));
$user=trim(strrchr($value, " "));
$value=trim(substr($value,0,strlen($value)-strlen($user)));
$targetDir=trim(strrchr($value, " "));
$value=trim(substr($value,0,strlen($value)-strlen($targetDir)));
return true;
}else{
continue;
}
}//while 结束，能运行到这一步说明没有找到匹配的 ID
return false;
}elseif($actionType=="del"){
//如果是删除文件操作
while (list($key,$value) = each($fileArray)) {
$value=trim($value);
//判断参数区域，将参数提取限制在 删除 文件设置区
$Zone_temp=substr($value,0,1);
if($Zone_temp=="["){//开始一个参数区域
if(strstr($value, "del")){
$canshuZoneId=1;
}else{
if($canshuZoneId==0) {
continue;
}else{
break;
}
}
}else{
if($canshuZoneId==0) continue;
}//区域选择结束
$id_temp=substr($value,0,$keylength);
if($id_temp==$actionID){
//开始取参数
$user=trim(strrchr($value, " "));
return true;
}else{
continue;
}
}//while 结束，能运行到这一步说明没有找到匹配的 ID
return false;
}else{//既不是 up，也不是 del
return false;
};
return false;
}
##取配置文件参数函数结束
//主程序
$configureFile="config.inc.php";
$actiontype=trim($actiontype);
##上传文件
if($actiontype=="upload"){
if(!($actionid && $username && $password && $userfile_name)) {
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($userfile_size>$maxLength*1024){echo "<html>上传的文件超过规定大小的上限。<a href=javascript:window.history.back()>点这里返回修改</a></html>";exit;}
if(!getUserRight($username,$user) && !getFileType($userfile_name,$fileType)){exit;} //可调整
if($limitSite!="*") if(checkFromSiteErr($HTTP_REFERER,$limitSite)) exit;
if($checkFile!="*") {
$cmd_return_var=passthru($checkFile." ".$userfile_name);//命令行参数要求问检查文件名 + 空格 + 上传文件名
//$cmd_return_var=true;//程序开发的时候使用，请删除
if(!$cmd_return_var){
echo "<html>您上传的文件没有通过我们的检查，请上传符合要求的文件。<a href=javascript:window.history.back()>点这里返回修改</a></html>";
exit;
}
};//调用外部程序检查，不符合要求的文件返回 false,符合要求返回 true;
if(""==trim($newname)){$newname=$userfile_name;};//处理文件名
$targetFileName=$targetDir."/".$newname;
if(file_exists($targetFileName)){
$oldTargetSize=filesize($targetFileName);
if($userfile_size<=$oldTargetSize ){
echo "<html>您要上传的目标文件已经存在。上传动作被取消。<a href=javascript:window.history.back()>点这里返回修改</a></html>";
exit;
}
};
copy($userfile,$targetFileName) or die;
chmod($targetFileName,0666);//110110110
//日志信息
$message=date("Y-m-d H:i:s")." remote_ip:".$REMOTE_ADDR." UserName:".$username." FileName:".$newname."";
putLog($actionid,$message);
header("location:".$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;}