php 在线解压代码,PHP在线解压程序源代码

很多服务器提供了解压ZIP文件的功能,比如cPanel和Direct Admin面板都有这个功能。但如果你的服务器刚好没有这个功能怎么办呢?这时候可以尝试使用PHP工具。

把这个文件夹压缩成zip或者tar.gz文件,上传到服务器,然后在服务器上解压,这样可以节省很多时间。

将下面代码保存为[ 任意名.php ] 传到空间,然后将你要传的文件打包成【ZIP】,上传到空间后。再打开你的解压PHP程序, 输入密码:www.office68.com(可以自己改)!

部分代码:

//验证密码

$password ="www.office68.com";

?>

在线解压程序PHP版

body,td{

font-size: 14px;

color: #000000;

}

a {

color: #000066;

text-decoration: none;

}

a:hover {

color: #FF6600;

text-decoration: underline;

}

–>

紧接上面的代码:

if(!$_REQUEST["myaction"]):

?>

function check_uploadObject(form){

if(form.password.value=="){

alert(’请输入密码.’);

return false;

}

return true;

}

选择ZIP文件:

- 请选择 -

$fdir = opendir(’./’);

while($file=readdir($fdir)){

if(!is_file($file)) continue;

if(preg_match(’/\.zip$/mis’,$file)){

echo “$file\r\n";

}

}

?>

或上传文件:

class zip

{

var $total_files = 0;

var $total_folders = 0;

function Extract ( $zn, $to, $index = Array(-1) )

{

$ok = 0; $zip = @fopen($zn,’rb’);

if(!$zip) return(-1);

$cdir = $this->ReadCentralDir($zip,$zn);

$pos_entry = $cdir['offset'];

if(!is_array($index)){ $index = array($index); }

for($i=0; $index[$i];$i++){

if(intval($index[$i])!=$index[$i]||$index[$i]>$cdir['entries'])

return(-1);

}

for ($i=0; $i

{

@fseek($zip, $pos_entry);

$header = $this->ReadCentralFileHeaders($zip);

$header['index'] = $i; $pos_entry = ftell($zip);

@rewind($zip); fseek($zip, $header['offset']);

if(in_array("-1″,$index)||in_array($i,$index))

$stat[$header['filename']]=$this->ExtractFile($header, $to, $zip);

}

fclose($zip);

return $stat;

}

function ReadFileHeader($zip)

{

$binary_data = fread($zip, 30);

$data = unpack(’vchk/vid/vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len’, $binary_data);

$header['filename'] = fread($zip, $data['filename_len']);

if ($data['extra_len'] != 0) {

$header['extra'] = fread($zip, $data['extra_len']);

} else { $header['extra'] = "; }

$header['compression'] = $data['compression'];$header['size'] = $data['size'];

$header['compressed_size'] = $data['compressed_size'];

$header['crc'] = $data['crc']; $header['flag'] = $data['flag'];

$header['mdate'] = $data['mdate'];$header['mtime'] = $data['mtime'];

if ($header['mdate'] && $header['mtime']){

$hour=($header['mtime']&0xF800)>>11;$minute=($header['mtime']&0×07E0)>>5;

$seconde=($header['mtime']&0×001F)*2;$year=(($header['mdate']&0xFE00)>>9)+1980;

$month=($header['mdate']&0×01E0)>>5;$day=$header['mdate']&0×001F;

$header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year);

}else{$header['mtime'] = time();}

$header['stored_filename'] = $header['filename'];

$header['status'] = “ok";

return $header;

}

function ReadCentralFileHeaders($zip){

$binary_data = fread($zip, 46);

$header = unpack(’vchkid/vid/vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/

Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset’, $binary_data);

if ($header['filename_len'] != 0)

$header['filename'] = fread($zip,$header['filename_len']);

else $header['filename'] = ";

if ($header['extra_len'] != 0)

$header['extra'] = fread($zip, $header['extra_len']);

else $header['extra'] = ";

if ($header['comment_len'] != 0)

$header['comment'] = fread($zip, $header['comment_len']);

else $header['comment'] = ";

if ($header['mdate'] && $header['mtime'])

{

$hour = ($header['mtime'] & 0xF800) >> 11;

$minute = ($header['mtime'] & 0×07E0) >> 5;

$seconde = ($header['mtime'] & 0×001F)*2;

$year = (($header['mdate'] & 0xFE00) >> 9) + 1980;

$month = ($header['mdate'] & 0×01E0) >> 5;

$day = $header['mdate'] & 0×001F;

$header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year);

} else {

$header['mtime'] = time();

}

$header['stored_filename'] = $header['filename'];

$header['status'] = ‘ok’;

if (substr($header['filename'], -1) == ‘/’)

$header['external'] = 0×41FF0010;

return $header;

}

function ReadCentralDir($zip,$zip_name){

$size = filesize($zip_name);

if ($size < 277) $maximum_size = $size;

else $maximum_size=277;

@fseek($zip, $size-$maximum_size);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值