Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- require ('../system/core.php');
- require ('../system/head.php');
- include 'pclzip.lib.php';
- $onpage = 10;
- $id = abs(intval($_GET['id']));
- $page = abs(intval($_GET['page']));
- $start = abs(intval($_GET['start']));
- $action = (isset($_GET['action']) && $_GET['action'] == 'preview') ? 'preview' : NULL;
- $request = mysql_query('SELECT * FROM load_file WHERE id=' . $id);
- if ($request === false) {
- echo 'Ошибка в запросе.';
- exit();
- }
- $d = mysql_fetch_assoc($request);
- // $d = mysql_fetch_assoc(mysql_query('SELECT * FROM `load_file` WHERE `id` = ' . $id));
- if (!file_exists('../files/down/'.$d['files'])) {
- err('Файл не найден!');
- include '../../system/footer.php';
- exit();
- }
- // ##############Получаем каталог#############
- $path = HOME . '/files/down/'.$d['files'];
- $filename = pathinfo($path);
- $ext = strtolower($filename['extension']);
- if ($ext != 'zip') {
- echo 'Файл не является архивом!';
- exit();
- }
- $dir = $filename['dirname'] . '/';
- $back = mysql_fetch_assoc(mysql_query("SELECT * FROM `load_files` WHERE `file` = '$dir'"));
- // ##############Заголовок###################
- echo '<div class="title">Просмотр архива '.$d['files'].'</div>';
- // ##############Содержимое###################
- if (!$action) {
- $zip = new PclZip('../files/down/' . $d['files']);
- if (!$list = $zip->listContent()) die('Ошибка: ' . $zip->errorInfo(true));
- for ($i = 0; $i < sizeof($list); ++$i) {
- for (reset($list[$i]); $key = key($list[$i]); next($list[$i])) {
- $zfilesize = strstr($listcontent, '--size');
- $zfilesize = str_replace('--size:', '', $zfilesize);
- $zfilesize = str_replace($zfilesize, $zfilesize . '|', $zfilesize);
- $sizelist.= $zfilesize;
- $listcontent = "[$i]--$key:" . $list[$i][$key];
- $zfile = strstr($listcontent, '--filename');
- $zfile = str_replace('--filename:', '', $zfile);
- $zfile = str_replace($zfile, $zfile . '|', $zfile);
- $savelist.= $zfile;
- }
- }
- $sizefiles2 = explode('|', $sizelist);
- $sizelist2 = array_sum($sizefiles2);
- $obkb = round($sizelist2 / 1024, 2);
- $preview = $savelist;
- $preview = explode('|', $preview);
- $count = count($preview) - 1;
- echo '<div class="podmenu">Всего файлов: ' . $count . '<br/>Вес распакованного архива: ' . $obkb . ' kb</div>';
- if (!isset($page)) $page = 1;
- $n = 0;
- $pages = ceil($count / $onpage);
- if (!$pages) $pages = 1;
- if ($page) $n = ($onpage * $page) - $onpage;
- if ($count == 0) echo 'Пусто...';
- $sizefiles = explode('|', $sizelist);
- $selectfile = explode('|', $savelist);
- // ------------------------------------------------------------------------------------------
- for ($i = 1; $i <= $onpage; ++$i) {
- if (empty($selectfile[$n])) {
- $n++;
- continue;
- }
- $path = $selectfile[$n];
- $fname = preg_replace('/.*\[\/\]/', '', $path);
- // $zdir = preg_replace('/\[\/\]?\[^\/\]*$/', '', $path);
- //echo '<div class="menudiv">';
- echo '<a href="/down/zip.php?action=preview&id=' . $id . '&open=' . $path . '" class="menudiv">' . $fname . ' [' . round($sizefiles[$n] / 1024, 2) . 'kb]</a>';
- //if ($sizefiles[$n] != 0) echo ' [' . round($sizefiles[$n] / 1024, 2) . 'kb]';
- //echo '</div>';
- $n++;
- }
- // ------------------------------------------------------------------------------------------
- echo '<div class="menudiv"><br/>Страницы: ';
- $asd = $page - 2;
- $asd2 = $page + 3;
- if ($asd < $count && $asd > 0 && $page > 3) echo '<a href="zip.php?id=' . $id . '&page=1">1</a> ... ';
- for ($i = $asd; $i < $asd2; $i++) {
- if ($i < $count && $i > 0) {
- if ($i > $pages) break;
- if ($page == $i) echo '<b>[' . $i . ']</b> ';
- else echo '<a href="zip.php?id=' . $id . '&page=' . $i . '">' . $i . '</a> ';
- }
- }
- if ($i <= $pages) {
- if ($asd2 < $count) echo ' ... <a href="zip.php?id=' . $id . '&page=' . $pages . '">' . $pages . '</a>';
- }
- echo '</div>';
- }
- // ##############Просмотр файла###################
- if ($action == 'preview') {
- $open = $_GET['open'];
- if (strpos($open, '..') !== false or strpos($open, './') !== false) {
- err('В хакера решил поиграть?');
- include '../../system/footer.php';
- exit();
- }
- $zip = new PclZip('../files/down/' .$d['files']);
- $content = $zip->extract(PCLZIP_OPT_BY_NAME, $open, PCLZIP_OPT_EXTRACT_AS_STRING);
- $content = $content[0]['content'];
- $preview2 = explode("\n", $content);
- $count = count($preview2);
- echo '<div class="menudiv">Файл: ' . $open . '</div>';
- $eX = strtolower(strrchr($open, '.'));
- $php = array(
- '.php',
- '.pl',
- '.js',
- '.jsp',
- '.html',
- '.xhtml',
- '.xml',
- '.wml',
- '.asp',
- '.aspx'
- );
- $txt = array(
- '.txt',
- '.sql',
- '.dat',
- '.css',
- '.ini',
- '.function',
- '.htaccess',
- '.tpl'
- );
- $img = array(
- '.gif',
- '.jpg',
- '.jpeg',
- '.png',
- '.bmp',
- '.wbmp',
- '.ico',
- '.swf'
- );
- if (empty($content)) echo 'Выбранный файл пуст.<br/>';
- if (isset($_GET['img'])) {
- $ext = strtolower(substr($open, strrpos($open, '.') + 1));
- ob_end_clean();
- ob_clean();
- header("Content-type: image/$ext");
- header("Content-Length: " . strlen($content));
- header('Content-Disposition: inline; filename="' . $open . '"');
- echo $content;
- exit();
- }
- if (in_array($eX, $php)) {
- $content = htmlspecialchars($content);
- echo (!empty($content) ? '<div class="podmenu">Строк: ' . $count . '</div><div class="podmenu"><pre class="prettyprint">' : '');
- if (!empty($content)) echo $content;
- else echo $content;
- }
- elseif (in_array($eX, $txt)) {
- $content = htmlspecialchars($content);
- echo (!empty($content) ? '<div class="podmenu">Строк: ' . $count . '</div><div class="podmenu">' : '');
- if (!empty($content)) echo '<pre class="prettyprint">' . wordwrap($content, 75, '<br/>') . '</pre>';
- else echo '<div style="background:#dedede; color:#727272; overflow: auto;"><pre class="prettyprint">' . wordwrap($content, 75, '<br/>') . '</pre></div>';
- }
- elseif (in_array($eX, $img)) {
- echo '<img src="?action=preview&id=' . $id . '&open=' . $open . '&img" alt=""/><br/>';
- }
- else {
- echo 'Невозможно прочесть файл!<br/>';
- }
- }
- echo '</pre></div>';
- echo '<a href="../down/file' . $id . '" class="menudiv">« К файлу</a>';
- if (isset($_GET['action'])) echo '<a href="../down/zip.php?id=' . $id . '" class="menudiv">« К просмотру архива</a>';
- require_once ('../system/footer.php');
- //die
- ?>
Advertisement
Add Comment
Please, Sign In to add comment