~就是一个能够打包文件夹内容的PHP小工具。您曾经是否郁闷过:我黑了别人的网站可是我也想下载他网站的源码,身边却没有好用的文件夹打包工具(很多WebShell工具都只是提供文件打包,不支持文件夹打包);又或是,你想只备份一个文件夹内的所有文件却怕FTP一个一个文件拉取的麻烦。现在,有了这款DoDo出品的PHP整站打包程序即可完成您的梦想。
第一代程序截图:
第二代程序截图:
支持目录跳转,支持自定义目录打包。
第二代源码(BY Ca3tie1
<html>
<head> 
<meta http-equiv="Content-Type"content="text/html; charset=gb2312"> 
<title>PHP整站打包程序-Ca3tie1修改版</title>
</head>
<style type="text/css">
A:LINK  {TEXT-DECORATION:none}
A:VISITED {COLOR:#3F3849}
</style>
<body> 
<form name="myform"method="post"action="">
<?php
if($_GET[tdir]){
$tdir=$_GET[tdir];
}else{
$tdir='./';
}
ini_set('memory_limit','2048M');
echo"选择要压缩的文件或目录,当前所在目录:".realpath($tdir)."<br>";
//目录列表
$fdir=opendir($tdir); 
while($file=readdir($fdir))
if(is_dir(realpath($tdir."/".$file)))
if($file!=".."&&$file!="."){
 echo"<input name='dfile[]' type='checkbox' value='$file' ".($file==basename(__FILE__)?"":"checked")."> ";
 echo"<font face=\"wingdings\"size=\"5\">0</font> <ahref=?tdir=".urlencode($tdir."/".$file).">$file</a><br>";
 }
 elseif($file==".."){ 
  echo "<ahref=?tdir=".urlencode("$tdir/../").">返回上级目录</a><br>";
 } 
}
}
//文件列表
$fdir = opendir($tdir); 
while($file=readdir($fdir))
if($file=='.'|| $file=='..')
continue; 
 
if(is_file(realpath($tdir."/".$file)))
{  echo "<input name='dfile[]'type='checkbox'value='$file'".($file==basename(__FILE__)?"":"checked").">";
 echo "<font face=\"wingdings\"size=\"5\">2</font>  $file<br>"; 
}
}
 
?>
<br>
包含下列文件类型:
<input name="file_type"type="text"id="file_type"value=""size="50"> 
<font color="red">
(文件类型用"|"隔开,默认空则包含任意文件,:如果需要打包phpjpg文件,则输入"php|jpg")
</font>
<br>
压缩文件保存到目录
<input name="todir"type="text"id="todir"value="__dodo__"size="15"> 
<font color="red">
(留空为本目录,必须有写入权限)
</font>
<br> 
压缩文件名称
<input name="zipname"type="text"id="zipname"value="dodo.zip"size="15"> 
<font color="red">
(.zip)
</font>
<br> 
<br>
<input name="myaction"type="hidden"id="myaction"value="dozip"> 
<input type='button'value='反选'onclick='selrev();'> 
<input type="submit"name="Submit"value=" 开始压缩 "> 
<script language='javascript'> 
functionselrev()
form)
 for(i=0;i<elements.length;i++)
 { 
  thiselm=elements[i]; 
  if(thiselm.name.match(/dfile\[]/))
   thiselm.checked = !thiselm.checked; 
 } 
</script>
<?php
set_time_limit(0); 
目前行的php开发工具有
classPHPzip
var$file_count=0; 
var$datastr_len   =0; 
var$dirstr_len=0; 
var$filedata='';//该变量只被类外部程序访问 
var$gzfilename; 
var$fp; 
var$dirstr=''; 
var$filefilters=array();
functionSetFileFilter($filetype)
{
      $this->filefilters=explode('|',$filetype);
  }
 
//返回文件的修改时间格式
//只为本类内部函数调用
functionunix2DosTime($unixtime=0)
$timearray=($unixtime==0)?getdate():getdate($unixtime); 
if($timearray['year']<1980)
 $timearray['year']    =1980; 
 $timearray['mon']     =1; 
 $timearray['mday']    =1; 
 $timearray['hours']   =0; 
 $timearray['minutes']=0; 
 $timearray['seconds']=0; 
return(($timearray['year']-1980)<<25)|($timearray['mon']<<21)|($timearray['mday']<<16)|  ($timearray['hours']<<11)|($timearray['minutes']<<5)|($timearray['seconds']>>1); 
}
//初始化文件,建立文件目录
//并返回文件的写入权限
functionstartfile($path='dodo.zip')
$this->gzfilename=$path; 
$mypathdir=array();
do
 $mypathdir[]=$path=dirname($path); 
}while($path!='.');
@end($mypathdir);
do
 $path=@current($mypathdir); 
 @mkdir($path); 
}while(@prev($mypathdir));
if($this->fp=@fopen($this->gzfilename,"w"))
 returntrue; 
}
returnfalse; 
}
//添加一个文件到 zip 压缩包中
functionaddfile($data,$name)
$name=str_replace('\\','/',$name);
if(strrchr($name,'/')=='/')
 return$this->adddir($name);
if(!empty($this->filefilters))
{
 if(!in_array(end(explode(".",$name)),$this->filefilters))
 {
  return;
 }
}
$dtime=dechex($this->unix2DosTime());
$hexdtime='\x'.$dtime[6].$dtime[7].'\x'.$dtime[4].$dtime[5].'\x'.$dtime[2].$dtime[3].'\x'.$dtime[0].$dtime[1];
eval('$hexdtime = "'.$hexdtime.'";');
$unc_len=strlen($data);
$crc  =crc32($data);
$zdata   =gzcompress($data);
$c_len   =strlen($zdata);
$zdata   =substr(substr($zdata,0,strlen($zdata)-4),2);
//新添文件内容格式化:
$datastr  ="\x50\x4b\x03\x04";
$datastr.="\x14\x00";            // ver needed to extract
$datastr.="\x00\x00";            // gen purpose bit flag
$datastr.="\x08\x00";            // compression method

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。