<?
	// PHP 文件上传组件 
	// 作者：PLUM
	// 最后修改时间：2007-07-11
?>

<?
	/* 文件上传参数设置 */

	//是否允许上传 (1-是/0-否)
	$UpFile_Set=1;															

	//上传文件更名 (1:时间 2:时间+原名 3:原名)
	$UpFile_NameSet=$UpFile_NameSet==""?1:$UpFile_NameSet;	
	
	//上传文件大小 (字节)
	$UpFile_MaxSize=$UpFile_MaxSize==""?5*1024*1024:$UpFile_MaxSize;

	//上传文件类型 (为空表示支持所有类型)
	$UpFile_ExteName=$UpFile_ExteName==""?".txt.jpg.jpeg.gif.png.swf.rar.zip":$UpFile_ExteName;

	//上传文件目录 (默认路径为"upload")
	$UpFile_Path=$UpFile_Path==""?"/upload":$UpFile_Path;
	
	//上传权限 (默认为空)
	$UpFile_Role_Name="role";
	$UpFile_Role_Value="admin";

	/* 设置结束 */
?>


<?
	// 判断是否设置权限参数
	if($UpFile_Role_Name=="" or $UpFile_Role_Value==""){
		exit("<script language=javascript>alert('警告：请先设置上传组件的操作权限！');window.opener=null;window.close();</script>");
	}
	// 检验权限
	session_start();
	if($_SESSION[$UpFile_Role_Name]<>$UpFile_Role_Value){
		exit("<script language=javascript>alert('警告：权限不足，禁止操作！');window.opener=null;window.close();</script>");
	}

	// 变量赋值
	if($_REQUEST){
		$arrays=$_REQUEST;
		if( is_array($arrays) ){			
			foreach($arrays as $keyword=>$value){
				$$keyword=$value;
			}
		}
	}	

	//如果已经提交表单
	if($up=="ok"){

		//获得 表单提交的各项参数
		$File_Describe=$describe;																//文件描述
		$File_Name		=$_FILES['userfile']['name'];							//文件名
		$File_Size		=$_FILES['userfile']['size'];							//文件大小		
		$File_Type		=$_FILES['userfile']['type'];							//文件类型
		$File_ExteName=strrchr($_FILES['userfile']['name'],".");//扩展名

		//对上传的文件进行检验
		$Flag="1";

		if($File_Size<=0){
		   $Flag="0";
		   echo"<script language='javascript'>alert('错误：\\n\\n上传的文件不存在！请您仔细检查！')</script>";
		}
		else{
			if($File_Size>$UpFile_MaxSize){
			   $Flag="0";
			   $msg="错误：\\n\\n";
			   $msg=$msg."您所上传的文件大小为：";
			   $msg=$msg.($File_Size/1024)." KB\\n\\n";
			   $msg=$msg."允许上传文件大小上限：";
			   $msg=$msg.($UpFile_MaxSize/1024)." KB\\n\\n";
			   $msg=$msg."请您上传符合条件的文件！";
			   echo "<script language='javascript'>alert('".$msg."')</script>";
			}
			if(strpos(strtoupper($UpFile_ExteName),strtoupper($File_ExteName))===False and $UpFile_ExteName<>""){
			   $Flag="0";
			   $msg="错误：\\n\\n";
			   $msg=$msg."您所上传文件的扩展名为：";
			   $msg=$msg.$File_ExteName."\\n\\n";
			   $msg=$msg."支持上传文件的扩展名为：";
			   $msg=$msg.$UpFile_ExteName."\\n\\n";
			   $msg=$msg."请您上传符合条件的文件！";
			   echo "<script language='javascript'>alert('".$msg."')</script>";
			}
		}

		// 根目录
		$Root_Path=$_SERVER["DOCUMENT_ROOT"];
		if(strrchr($Root_Path,"/")=="/"){
			$Root_Path=substr($Root_Path,0,strlen($Root_Path)-1);
		}

		// 存放目录
		$Real_Path=$UpFile_Path;

		// 上传文件所在目录
		$File_Path=dirname(__FILE__);

		// 获取真实目录
		if($Real_Path==""){
		   $Real_Path=$File_Path."/upload";
		}
		else{			
			if(substr($Real_Path,0,1)<>"/"){
				$Real_Path=$File_Path."/".$Real_Path;
			}
			else{
				$Real_Path=$Root_Path.$Real_Path;
			}
			$Real_Path=str_replace("\\","/",$Real_Path);
		}

		// 判断目录后面是否带 /
		if(substr($Real_Path,strlen($Real_Path)-1,1)<>"/"){
		   $Real_Path=$Real_Path."/";
		}

		// 判断目录是否存在
		if(!is_dir($Real_Path)){
			if(!mkdir($Real_Path, 0777)){
				$Flag="0";
				$msg="错误：\\n\\n";
				$msg=$msg."创建文件夹 $Real_Path 失败！";
				echo "<script language='javascript'>alert('".$msg."')</script>";
			}
		}
		
		// 判断文件是否存在
		if(file_exists($Real_Path.$File_Name)){
			$UpFile_NameSet=1;
		}

		// 判断是否越权
		if(strstr($Real_Path,$Root_Path)==""){
			$Flag="0";
			$msg="错误：\\n\\n";
			$msg=$msg."上传路径[$Real_Path]不允许在网站目录[$Root_Path]外！";
			echo "<script language='javascript'>alert('".$msg."')</script>";
		}

		if($Flag<>"1"){
			exit("<script language='javascript'>top.close();</script>");
		}
		else{
			//Save File
			$File_TrueName=$File_Name;
			switch($UpFile_NameSet){
				case 1:
					$File_Name=date("YmdHis").strtolower($File_ExteName);
					break;
				case 2:
					$File_Name=date("YmdHis").str_replace(" ","_",$File_Name);
					break;
				case 3:
				default:
					$File_Name=str_replace(" ","_",$File_Name);
					break;
			}
			if( move_uploaded_file($_FILES['userfile']['tmp_name'],$Real_Path.$File_Name) ){
				//Save information into MySQL				
				if(is_file("upfile_query.php")){require_once("upfile_query.php");}
				exit("<script language='javascript'>function return_value(a,b){window.top.returnValue='1╃'+a+'╃'+b+'╃'+c;setTimeout('top.close()',100);};a='".$File_Describe."';b='".str_replace($Root_Path,"",$Real_Path).$File_Name."';c='".floor($File_Size/1024)." K';return_value(a,b);</script>");
			}
			else{
				exit("<script language='javascript'>alert('错误：\\n\\n文件 ".$Real_Path.$File_Name." 上传失败！请确保你是否有足够的权限！');top.close();</script>");
			}
		}

	}

?>





<?
	if($show==1){
		if($UpFile_Set==0){
			exit("<script language=javascript>alert('对不起！本上传功能被关闭了！');window.opener=null;window.close();</script>");
		}
?>

<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>
<META HTTP-EQUIV='MSThemeCompatible' CONTENT='no'>
<title>ＰＨＰ文件上传组件　　　Copyright (C) Niuren.CN　</title>
</head>
<body leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'>
<div id='layer1' style='position:absolute; top:0; left:0; width: 426px; height:138px; z-index: 1; overflow: visible; visibility: visible;background-color: menu;'><form name='UpFiles' method='post' enctype='multipart/form-data' onsubmit='return check_content()' target='frame'><table width='400' border='0' cellspacing='0' cellpadding='0' align='center'><tr><td align='center' valign='middle'><br><fieldset style='font-size:9pt;height:100'><legend>文件上传</legend><font style='font-size:5pt;'><br></font>文件描述：<input type='text' name='describe' value='' size='30' maxlength=50 style='width:200'><br><br>文件路径：<input type='file' name='userfile'    value='' size='30' maxlength=50 style='width:200'></fieldset></td><td align='right' valign='middle'><br><input type='submit' name='submit' value='确 定' style='height:25;width:80'><br><br><input type='reset'  name='reset'  value='取 消' style='height:25;width:80' onClick='window.top.returnValue=null;window.top.close()'></td></tr></table></form></div>
<div id='layer2' style='position:absolute; top:0; left:0; width: 426px; height:138px; z-index: 2; overflow: visible; visibility: hidden; background-color: menu;'><table border='0'  style='font-size:9pt' width='100%'><tr><td height='25'>&nbsp;</td></tr><tr><td align=left valign='buttom'><form name='loading'>&nbsp;&nbsp;文件正在上传<br><br>&nbsp;&nbsp;<input type='text' name='chart' size='33'      style='font-size:16;font-weight:bolder; color:blue; background-color:buttonface;height:22;' onFocus='this.blur()' >&nbsp;&nbsp;<input type='button' name='close'  value='取 消' style='width:65;height:22;' onclick='window.top.returnValue=null;window.top.close()' ></form></td></tr><tr><td align='right' valign='bottom' height='20'><a href='mailto:plum@niuren.cn'><font face=Verdana, Arial, Helvetica, sans-serif size=1><b>POWER BY <font color=#CC0000>PLUM</font></b></font></a>&nbsp;</td></tr></table></div>
<iframe id=frame name=frame style='width:0;height:0; visibility: inherit; z-index: 1' scrolling=no frameborder=0 src=''></iframe>
<script language="javascript">
document.oncontextmenu=new Function("event.returnValue=false;");
document.onselectstart=new Function("event.returnValue=false;");
document.ondragstart=new Function("event.returnValue=false;");
function check_content()
{
	if(document.UpFiles.describe.value!="" && document.UpFiles.userfile.value!="")
	{
		document.UpFiles.action="upfile.php?up=ok";
		showlayer();
		return true;
	}
	else
	{
		alert("错误：填入信息不全！");
		return false;
	}
}

function showlayer()
{
	layer1.style.visibility="hidden";
	layer2.style.visibility="visible";
	count();
}

var i=0;
function count()
{
	i=i+1;
	document.loading.chart.value=document.loading.chart.value+"█";
	if(i>=20)
	{
		i=0;
		document.loading.chart.value="";
	}
	setTimeout("count()",300);
}
</script>
</body>
</html>

<?
	}
	else{		
?>

		<script language="javascript">
		function upfile()
		{
			web_path="upfile.php?show=1";
			ie_version=(window.navigator.userAgent.indexOf("MSIE 5.5")>0 || window.navigator.userAgent.indexOf("MSIE 6")>0 || window.navigator.userAgent.indexOf("MSIE 7")>0)?1:0;
			if(ie_version==0)
			{
				web_path="about:<html><head><meta http-equiv='Content-Type' content='text/html; charset=gb2312'><title>ＰＨＰ文件上传组件　　　Copyright (C) Niuren.CN　</title></head><frameset rows='0,*' framespacing='0' border='0' frameborder='0'><frame src='about:blank;'><frame src='"+web_path+"'></frameset></html>";
			}
			return_value=showModalDialog(web_path,"test","dialogWidth=27;dialogHeight=10.2;help=no;resizable=no;status=no;center=yes;scroll=no;help=no;")  
			if(return_value != null)
			{
				Space=return_value.split("╃");
				UpFile_Succeed=Space[0];
				UpFile_Describe=Space[1];
				UpFile_Path=Space[2];
				UpFile_Size=Space[3];
				if(UpFile_Succeed=="1")
				{
					return 1;
				}
				else
				{
					return 0;
				}
			}
			else
			{
				return 0;
			}
		}
		</script>

<?
	}
?>