{% else-1 %}
Prostoy kod

                        
?php
// вспомогательная функция, выводит размер файлаfunctionsizer($s){$o=1;
while($s>1024){

$s = round($s / 1024, 1);
$o++;
}
switch($o){

case(1):
$o='b'; break;
case(2):
$o='Kb';break;
case(3):
$o='Mb';break;
case(4):
$o='Gb';break;
}
return$s.$o;
if(!empty($_GET['arh']))
$arh = base64_decode($_GET['arh']);
if(!is_file($arh))
die('Файла не существует!');
if(!empty($_GET['act']))
$act = $_GET['act'];
else$act = 'main';
$zip = new ZipArchive;
if($zip->open ($arh) === TRUE){

switch($act){

case('main'):
echo'Обьектов: '.$zip->numFiles.'<br/>';
if($zip->comment != NULL)
echo'Комментарий: '.$zip->comment.'<br/>';
for ($i = 0; $i < $zip->numFiles; $i++) {

$t = $zip-> statIndex($i);
if(preg_match('//$/',$t['name']))
echo'Каталог <strong>'.$t['name'].'</strong>';
elseecho'<a href="?act=pre&arh='.$_GET['arh'].'&index='.$t['index'].'">'.$t['name'].
'</a> ['.sizer($t['size']).'/'.sizer($t['comp_size']).']';
echo'<br/>';
}
break;
case('pre'):
if($info = $zip->statIndex(abs((int)$_GET['index']))){

echo'Файл '.$info['name'].'<br/>
<a href="?act=down&arh='.$_GET['arh'].'&index='.$info['index'].'">Скачать файл</a>
<br/>
Размер запакованого файла '.sizer($info['comp_size']).' ('.$info['comp_size'].' b)<br/>
Размер распакованого файла: '.sizer($info['size']).' ('.$info['size'].' b)<br/>
Метод сжатия: '.$info['comp_method'].'<br/>';
$highlight=array('php','html','htm');
$astext=array('txt','css','ini','htaccess');
$type=substr($info['name'],strrpos($info['name'],'.')+1);
if(in_array($type, $highlight)){

highlight_string($zip->getFromIndex($info['index']));
}elseif(in_array($type, $astext)){

echo nl2br(htmlspecialchars($zip->getFromIndex($info['index'])));
}
}elseecho'Ошибка извлечения файла!';
break;
case('down'):
$index = abs((int)$_GET['index']);
if($name = $zip->getNameIndex($index)){

header('Content-Type: application/octet-stream', true);
header('Content-Disposition: attachment; filename="'.urlencode(basename($name)).'";');
echo$zip->getFromIndex($index);
}elseecho'Ошибка извлечения файла!';
break;
default:
echo'Не известное действие';
break;
$zip->close();elseecho'Ошибка открытия архива!';
?>
0 53 0
Без комментариев...