⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 do.php

📁 航空订票系统基于asp.net和sql2005包含数据库和图片
💻 PHP
字号:
<?
/*
*#########################################
* PHPCMS 文件管理器 v4.01 
* Copyright (c) 2004-2006 phpcms.cn
* 作者:Longbill ( http://www.longbill.cn )
* 请保留版权信息
*#########################################
*/

include_once("pre_do.php");
include_once("func.php");
@error_reporting(1);
$user=check_login();
$root=$user["root"];
if (!$user) exitme("alert('登陆超时!');window.location='index.php';","eval");

$path = dealpath($path);
$action1 = $_COOKIE["action1"];
if (!is_dir($root)) @mkdir($root);

if (!$path)
{
	exitme("alert('你没有权限查看此目录!');opendir('$root');","eval");
}

include_once("class/longbill.class.php");

$lb=new longbill;
$lb->ftp_host=$ftp_host;
$lb->ftp_user=$ftp_user;
$lb->ftp_pass=$ftp_pass;

if (!$path && $_COOKIE["cpass"]) $path=$_COOKIE["cpass"];

if (!is_file($path) && !is_dir($path)) exitme("alert('找不到文件或文件夹:$path');opendir('$root');","eval");

if (is_dir($path) && substr($path,-1)!="/") $path.="/";

/////////////输出目录数据////////////
if ($action=="list")
{
	if ($up=="yes")
	{
		$path=substr(0,strlen($path)-1,$path);
		$path=dirname($path)."/";
	}
	$lb->dir($path,$sdir,$sfile,$size);
	$s="";
	$viewhidefiles = ($user["viewhidefiles"] && $_POST["viewhidefiles"]); 
	if (!is_array($hidefiles)) $hidefiles = array();
	if (file_exists($path.'~folderdata~.php'))
	{
		$lines = @file($path.'~folderdata~.php');
		for($i=1;$i<count($lines);$i++)
		{
			$v = $lines[$i];
			if (strpos($v,"|") === false) continue;
			$arr = explode("|",$v);
			if ($arr[0] == "hidefiles")
			{
				for ($j=1;$arr[$j];$j++)
				{
					$hidefiles["{$arr[$j]}"] = true;
				}
			}
		}
	}
	
	foreach($sdir as $v)
	{
		if ($hidefiles["{$v}"])
		{
			if (!$viewhidefiles) continue;
			else $s.="||{$v}[/hide]";
		}
		else $s.="||{$v}";
	}
	for($i=0;$i<count($sfile);$i++)
	{
		if ($hidefiles["{$sfile[$i]}"])
		{
			if (!$viewhidefiles) continue;
			$s.="||{$sfile[$i]}[/hide]|".dealsize($size[$i]);
		}
		else $s.="||".$sfile[$i]."|".dealsize($size[$i]);
	}
	$s.="||";
	exitme($s);
}


///////////////批量删除////////////////
else if ($action=="delete" && $user["delete"])
{
	$sfile=urldecode1($_POST["sfile"]);
	$sdir=urldecode1($_POST["sdir"]);
	$dn=0; $fn=0; $err=""; $logstr="批量删除,路径:$path:\n";
	$arr=explode("|",$sfile);

	foreach($arr as $v)
	{
		if ($v=="") continue;
		$filename=$path.$v;
		echo "开始删除文件 $filename \n";
		$ftype = getext($v);
		if ($user["limit"]["$ftype"] && !$user["only"])
			$err.="文件{$v}删除失败:不能删除{$user["limittype"]}类型的文件!\n";
		else if (!$user["limit"]["$ftype"] && $user["only"])
			$err.="文件{$v}删除失败:不能删除除{$user["limittype"]}类型以外的文件!\n";
		else if (is_file($filename) && @unlink($filename))
		{
			$fn++;
			$logstr.="    文件,$v,成功\n";
		}
		else
			$err.="文件{$v}删除失败!\n";
	}
	
	$arr=explode("|",$sdir);

	foreach($arr as $v)
	{
		if ($v=="") continue;
		$filename=$path.$v;
		if ($lb->del_dir($filename,$info,$err))
			$logstr.="    目录,$v,成功\n";
		else
			$err.="目录{$v}删除失败!\n";
		$dn+=$info["dir"];
		$fn+=$info["file"];
	}
	$logstr.="删除完成,错误信息:".($err)?$err:"无";
	inlog($logstr);
	$str.=($fn+$dn == 0)?"Nothing has been deleted!":"You have deleted:";
	$str.=($dn)?"\n{$dn} folder":"";
	$str.=($dn>=2)?"s":"";
	$str.=($fn)?"\n{$fn} file":"";
	$str.=($fn >=2)?"s":"";	
	$str.=($err)?"\n\nErrors:\n$err":"";
	exitme($str);
}

//////////////新建目录////////////////
else if ($action=="newdir" && $user["newdir"])
{
	$name1 = checkfilename($name);
	if ($name1 != $name) exitme("目录名有误!",0);
	$filename=dealpath($path.$name);
	if (is_dir($filename)) exitme("目录 $name 已经存在!",0);
	if (mkdir($filename,0777))
	{
		inlog("创建目录,$filename,成功");
		exitme("目录 $name 创建成功!!");
	}
	else
	{
		exitme("目录 $name 创建失败!!",0);
	}
}

/////////////新建文件///////////
else if ($action=="newfile" && $user["newfile"])
{
	$name1=checkfilename($name);
	if ($name1 != $name) exitme("文件名有误!",0);
	checktype($name,"新建");
	$filename=dealpath($path.$name);
	if (is_file($filename) || is_dir($filename)) exitme("有同名文件或文件夹存在!",0);
	if (@fclose(@fopen($filename,"a")))
	{
		inlog("新建文件,$filename,成功");
		exitme("文件 $name 创建成功!!");
	}
	else
		exitme("文件 $name 创建失败!!",0);
}


//////////////重命名//////////////
else if ($action=="rename" && $user["rename"])
{
	$file1 = checkfilename($file1);
	$file2 = checkfilename($file2);
	$filename2=dealpath($path.$file2);
	$filename1=dealpath($path.$file1);
	if ($filename1!=$path.$file1 || $filename2!=$path.$file2) exitme("文件或文件夹名错误!",0);
	checktype($filename1,"重命名");
	checktype($filename2,"重命名");
	if (is_file($filename2) || is_dir($filename2)) exitme("有同名文件或文件夹存在!",0);
	if (!@rename($filename1,$filename2))
		exitme("重命名失败!!",0);
	else
	{
		inlog("重 命 名,把$filename1命名为$filename2,成功");
		exitme("成功把 ".$file1." 重命名为 ".$file2);
	}
}
//////////////保存文件/////////////////////
else if ($action == "savefile")
{
	if (!$user["savefile"]) exitme1("你没有保存文件的权限");
	if ($filename != checkfilename($filename)) exitme1("文件名有误!");
	$filename=StripSlashes(dirname($path)."/".$filename);
	$ftype = getext($filename);
	
	if ($user["limit"]["$ftype"] && !$user["only"])
		exitme1("不能保存为{$user["limittype"]}类型的文件!");
	else if (!$user["limit"]["$ftype"] && $user["only"])
		exitme1("不能保存为除{$user["limittype"]}类型以外的文件!");
	
	$content=StripSlashes($content);
	$fp=@fopen($filename,"w") or exitme1("打开文件失败!");
	@fputs($fp,$content) or exitme1("保存数据失败!");
	@fclose($fp) or exitme1("关闭文件失败!");
	exitme1("文件".basename1($filename)."保存成功!");
}
///////////远程下载////////////////////
else if ($action == "savefromurl" && $user["savefromurl"])
{
	if (!$path || !$url) exitme("请输入正确的参数!",0);
	if (!$filename)   $filename = basename1($url);
	if ($filename != checkfilename($filename)) exitme("下载失败:文件名有误!",0);
	checktype($filename,"下载");
	if (file_exists($path.$filename)) exitme('下载失败:有同名文件存在!',0);
	$filename = dealpath($path.$filename);
	if (@copy($url,$filename))
		exitme("成功把 $filename 下载到服务器!");
	else
		exitme("下载失败:请确保文件地址正确!",0);
}
///////////////粘贴/////////////////////////
else if ($action=="paste")
{
	if ($action1 != "cut" && $action1 != "copy") exitme("剪贴板无内容!",0);
	$sfile=urldecode1($_COOKIE["sfile"]);
	$sdir=urldecode1($_COOKIE["sdir"]);
	$sfile=explode("|",$sfile);
	$sdir=explode("|",$sdir);
	$frompath=$_COOKIE["from"];
	$cut=($action1=="cut");
	$action2=($action1 == "cut")?"移动":"复制";
	$from=array();
	$to=array();
	$ii=0;
	$path=$_POST["path"];
	$coverfile=$_POST["coverfile"];
	$logstr= $action2."文件,从".$_COOKIE["from"]."到 ".$path.",";
	
	if ($frompath == $path)
	{
		foreach($sfile as $f) if ($f) $sdir[]=$f;
		for($i=0;$i<count($sdir);$i++)
		{
			if (!$sdir[$i]) continue;
			$k=1;
			$filename=$path."复件 ".$sdir[$i];
			while (file_exists($filename))
			{
				$filename=$path."复件(".$k.") ".$sdir[$i];
				$k++;
			}			
			$from[$ii] = $frompath.$sdir[$i];
			$to[$ii] = $filename;
			$logstr.="dir:".$filename."|";
			$ii++;
		}
	}
	else if (!$cover)
	{
		for($i=0;$i<count($sdir);$i++)
		{
			if (!$sdir[$i]) continue;
			$from[$ii] = $frompath.$sdir[$i];
			$to[$ii] = $path.$sdir[$i];
			$logstr.="dir:".$sdir[$i]."|";
			$ii++;
		}
		for($i=0;$i<count($sfile);$i++)
		{
			if (!$sfile[$i]) continue;
			$from[$ii] = $frompath.$sfile[$i];
			$to[$ii] = $path.$sfile[$i];
			$logstr.="file:".$sdir[$i]."|";
			$ii++;
		}
	}
	else if ($coverfile)
	{
		$arr=explode("|",$coverfile);
		for($i=0;$i<count($arr);$i++)
		{
			if (!$arr[$i]) continue;
			$from[$ii] = $frompath.$arr[$i];
			$to[$ii] = $path.$arr[$i];
			$logstr.="cover:".$arr[$i]."|";
			$ii++;
		}
	}
	else die;

	$lb->copy($from,$to,$cover,$cut,$coverfiles) or exitme($action2."时发生错误!",0);
	
	if (!$cover && is_array($coverfiles))
	{
		$coverfile="";
		foreach($coverfiles as $i) $coverfile.=str_replace($path,"",$i)."|";
		exitme("if (confirm('以下文件已经存在:\\n".str_replace("|","\\n",$coverfile)."要覆盖吗?')){sendcomm('paste',Array('path','cover','coverfile'),Array(path,'true','".$coverfile."'));}else{reloaddata(path);}","eval");
	}
	
	$eval="alert('".$action2."文件成功!');reloaddata('".$path."');";
	$eval.=($action1 == "cut")?"reloaddata('".$frompath."');setcookie('from','');setcookie('action1','');setcookie('sdir','');setcookie('sfile','');":"";
	exitme($eval,"eval");
}

/////////////////////////zip文件解压////////////////
else if ($action=="unpack" && $user["unpack"])
{
	if (!file_exists($path.$file)) exitme("文件没有找到!",0);
	if (!$key) exitme("参数错误",0);
	unpackzip($path.$file,$path.$key,$indexes,$cover,$info);
	
	if (!$cover && count($info["cover"])!=0)
	{
		$coverfiles="\\n";
		$coverindex="|";
		foreach($info["cover"] as $v)
			if ($v)
			{
				$coverfiles.=$v["filename"]."\\n";
				$coverindexes.=$v["index"]."|";
			}
		$eval="if (confirm('成功解压出 ".$info["dir"]."个目录 和 ".$info["file"]."个文件\\n";
		$eval.="原始大小 ".dealsize(filesize($path.$file))." 解压后大小 ".dealsize($info["size"])."\\n";
		$eval.="以下文件有同名文件存在".$coverfiles."要覆盖吗?')){alert('执行部分解压');}else{reloaddata(path);}";
		exitme($eval,"eval");
	}
	$errors="";
	foreach($info["error"] as $v) $errors.= $v."\\n";
	
	$s= "成功解压出 ".$info["dir"]."个目录 和 ".$info["file"]."个文件\n";
	$s.= "原文件大小 ".dealsize(filesize($path.$file))." 解压后大小 ".dealsize($info["size"]);
	$s.=($errors)?"\n但是在解压文件:\n$errors时发生错误!":"";
	exitme($s);
}
///////////////全部解压//////////////
else if ($action=="unpackall" && $user["unpack"])
{
	if (!file_exists($path.$file)) exitme("文件没有找到!",0);
	if (!$key) exitme("参数错误",0);
	if (!$indexes) $indexes = -1;
	unpackzip($path.$file,$path.$key,$indexes,$cover,$info);
	
	if (is_dir($path.$key)) $info["folders"][]=$path.$key;
	$info["folders"][]=$path;	
	
	if (!$cover && count($info["cover"])!=0)
	{
		$coverfiles="\\n";
		$coverindex="|";
		foreach($info["cover"] as $v)
			if ($v)
			{
				$coverfiles.=$v["filename"]."\\n";
				$coverindexes.=$v["index"]."|";
			}
		$eval='';
		for($i=0;$i<count($info["folders"]);$i++)
		{
			$eval.="setTimeout(\"reloaddata('";
			$eval.=$info["folders"][$i];
			$eval.="')\",";
			$eval.=$i*100;
			$eval.=");";
		}
		$eval.="if (confirm('成功解压出 ".$info["dir"]."个目录 和 ".$info["file"]."个文件\\n";
		$eval.="原始大小 ".dealsize($info["orig_size"])." 解压后大小 ".dealsize($info["size"])."\\n";
		$eval.="以下文件有同名文件存在".$coverfiles."要覆盖吗?')){sendcomm('unpackall',Array('path','file','key','indexes','cover'),Array(path,'$file','$key','$coverindexes','1'));}else{reloaddata(path);}";
		exitme($eval,"eval");
	}
	$eval='';
	for($i=0;$i<count($info["folders"]);$i++)
	{
		$eval.="setTimeout(\"reloaddata('";
		$eval.=$info["folders"][$i];
		$eval.="')\",";
		$eval.=$i*100;
		$eval.=");";
	}
	
	$errors="";
	foreach($info["error"] as $v) $errors.= $v."\\n";
	
	$s= "alert('成功解压出 ".$info["dir"]."个目录 和 ".$info["file"]."个文件\\n";
	$s.= "原文件大小 ".dealsize($info["orig_size"])." 解压后大小 ".dealsize($info["size"]);
	$s.=($errors)?"\\n但是在解压文件:\\n$errors时发生错误!":"";
	$s.="');";
	exitme($eval.$s,"eval");
}
////////////////zip打包///////////////////////
else if ($action=="zippack" && $user["zippack"])
{
	$sfile= urldecode1($_POST["sfile"]);
	$sdir = urldecode1($_POST["sdir"]);

	if (strtolower(substr($key,-4)) != ".zip") $key.=".zip";
	if (@file_put_contents($path.$key,zippack($path,$sdir,$sfile)))
		exitme("$key 压缩成功!");
	else
		exitme("$key 压缩失败",0);
}
///////////////输出目录属性/////////////////
else if ($action == "property" )
{
	if (!is_dir($path)) exitme("目录不存在!",0);
	$info=$lb->get_property($path);
	$s = "文件夹:".$path."\n";
	$s.= "目录数:".$info["dir"]."\n";
	$s.= "文件数:".$info["file"]."\n";
	$s.= "总大小:".dealsize($info["size"])."\n";
	$s.= ($info["writable"])?"可写":"不可写";
	exitme($s);
}
//////////没有权限 ////////
else
{
	exitme("您没有此项操作的权限!",0);
}

function exitme($ss,$t=1)
{
	global $action;
	if ($action != "list") $ss = " ".$ss;
	$ss = str_replace("\n"," \n ",$ss);
	$s = '+';
	if ($t === 1) $s.="OK";
	else if ($t === "eval") $s.="Eval";
	else $s.="Error";
	$s = $s."==?".$ss."?==";
	$r = (function_exists("iconv"))?@iconv('GB2312','UTF-8',$s):"";
	if (trim($r) == "")
	{
		header("Content-type:TEXT/HTML;Charset=GB2312");
		exit($s);
	}
	else
	{
		header("Content-type:TEXT/HTML;Charset=UTF-8");
		exit($r);
	}
}

function checkfilename($file)
{
	if (!$file) return false;
	$file = trim($file);
	$a = substr($file,-1);
	while ($a =="." || $a =="/" || $a == "\\")
	{
		$file=substr($file,0,-1);
		$a = substr($file,-1);
	}
	$a = substr($file,0,1);
	while ($a =="." || $a =="/" || $a == "\\")
	{
		$file=substr($file,1,strlen($file));
		$a = substr($file,0,1);
	}	
	$arr = array("../","./","/","\\","..\\",".\\");
	$file = str_replace($arr,"",$file);
	return $file;
}

function exitme1($s)
{
	exit("<script language=javascript>alert('".$s."');window.close();</script>");
}

function checktype($filename,$s)
{
	global $user;
	$ftype = getext($filename);
	if ($user["limit"]["$ftype"] && !$user["only"])
		exitme("不能{$s}{$user["limittype"]}类型的文件!",0);
	else if (!$user["limit"]["$ftype"] && $user["only"])
		exitme("不能{$s}除{$user["limittype"]}类型以外的文件!",0);
}
?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -