File size: 3.33Kb
<?php
include 'system/func.php';
include 'system/ftp_connect.php';
$pad=dir_url('/'.prov(boff($_GET['arh'])));
$title='Просмотр архива "'.basename($pad).'"';
include 'system/head.php';
title($title);
$fi=ftprename($pad);
ftp_pasv($serv,true);
$res = ftp_size($serv,$pad);
$d=prov($_GET['d']);
if(empty($d)){
$d=trim('tmp/'.$savedir.'/'.$fi);
}else{
$d=boff(prov($_GET['d']));
}
if ($res != -1) {
if (ftp_get($serv, 'tmp/'.$savedir.'/'.$fi, $pad, FTP_BINARY)) {
$path=pathinfo($pad);
if (!preg_match('/tmp\/(.*?)/i',$d)){
err('Критическая ошибка. Попробуйте позже');
include 'system/foot.php';
exit();
}
if(!is_file($d)){
err('Файла не существует!');
include 'system/foot.php';
exit();
}
$zip = new ZipArchive();
if($zip-> open ('tmp/'.$savedir.'/'.$fi) == TRUE){
switch($act){
default:
$array_size=array();
for($as=0; $as<$zip->numFiles; $as++){
$arhi=$zip->statIndex($as);
$array_size[$as]=$arhi['size'];
}
$archsize=array_sum($array_size);
echo '<div class="menu">Всего файлов: '.$zip->numFiles.'<br/>';
echo 'Размер после распаковки: '.sizer($archsize).'</div><div class="menu">';
$cnt=$zip->numFiles;
if ($cnt > 0){
$total=intval(($cnt-1)/15)+1;
if (empty($page) OR $page < 1) $page=1;
elseif ($page > $total) $page=$total;
$start=$page*15-15;
for ($i=$start; $i <($start+15); $i++) {
$t = $zip-> statIndex($i);
if(preg_match('/\/$/',$t['name']))
echo '<img src="/design/img/dir.gif" alt="*"> <b>'.$t['name'].'</b><br/>';
else
echo '<img src="/design/img/file.gif" alt="*"> <a href="/zip.php?act=pre&d='.bon(prov($d)).'&arh='.prov($_GET['arh']).'&page='.$page.'&index='.$t['index'].'">'.$t['name'].'</a> ('.sizer($t['size']).')<br/>';
if ($i == ($cnt-1)) break;
}
echo '</div>';
navigator($cnt, $page, '15', $total, '/zip.php?arh='.bon($pad).'&page=');
}else{
err('Архив пуст');
}
echo '<div class="menu">« <a href="/ftp.php?d='.bon(verh2($pad)).'">Назад</a></div>';
break;
case'pre':
if($info = $zip->statIndex(abs((int)$_GET['index']))){
$highlight=array('php','html','htm');
$astext=array('txt','css','ini','htaccess');
$type=substr($info['name'],strrpos($info['name'],'.')+1);
echo '<div class="menu">Файл: '.$info['name'].'<br/>Формат: '.$type.'<br/>Размер: '.sizer($info['size']).'</div>';
if(in_array($type, $highlight)){
$code=highlight_string($zip->getFromIndex($info['index']), true);
$code=preg_replace('#<code>(.*)</code>#sU','\1',$code);
echo '<div class="menu">'.$code.'</div>';
}elseif(in_array($type, $astext)){
echo '<div class="menu">'.nl2br(htmlspecialchars($zip->getFromIndex($info['index']))).'</div>';
}else{
$code=highlight_string($zip->getFromIndex($info['index']), true);
$code=preg_replace('#<code>(.*)</code>#sU','\1',$code);
echo '<div class="menu">'.$code.'</div>';
}
}else{
err('Ошибка извлечения файла');
}
echo '<div class="menu">« <a href="/zip.php?arh='.bon($pad).'&page='.$page.'">Назад</a></div>';
break;
}
$zip->close();
}else{
err('Ошибка открытия архива');
}
@unlink('tmp/'.$savedir.'/'.$fi);
} else {
err('Не удалось зугрузить файл на сервер');
}
}else{
header('Location: /ftp.php');
}
ftp_close($serv);
include 'system/foot.php';
?>