Guest User

Untitled

a guest
Feb 11th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.25 KB | None | 0 0
  1. <?php
  2. require ('../system/core.php');
  3.  
  4. require ('../system/head.php');
  5.  
  6. include 'pclzip.lib.php';
  7.  
  8. $onpage = 10;
  9. $id = abs(intval($_GET['id']));
  10. $page = abs(intval($_GET['page']));
  11. $start = abs(intval($_GET['start']));
  12. $action = (isset($_GET['action']) && $_GET['action'] == 'preview') ? 'preview' : NULL;
  13. $request = mysql_query('SELECT * FROM load_file WHERE id=' . $id);
  14.  
  15. if ($request === false) {
  16. echo 'Ошибка в запросе.';
  17. exit();
  18. }
  19.  
  20. $d = mysql_fetch_assoc($request);
  21.  
  22. // $d = mysql_fetch_assoc(mysql_query('SELECT * FROM `load_file` WHERE `id` = ' . $id));
  23.  
  24. if (!file_exists('../files/down/'.$d['files'])) {
  25. err('Файл не найден!');
  26. include '../../system/footer.php';
  27.  
  28. exit();
  29. }
  30.  
  31. // ##############Получаем каталог#############
  32.  
  33. $path = HOME . '/files/down/'.$d['files'];
  34. $filename = pathinfo($path);
  35. $ext = strtolower($filename['extension']);
  36.  
  37. if ($ext != 'zip') {
  38. echo 'Файл не является архивом!';
  39. exit();
  40. }
  41.  
  42. $dir = $filename['dirname'] . '/';
  43. $back = mysql_fetch_assoc(mysql_query("SELECT * FROM `load_files` WHERE `file` = '$dir'"));
  44.  
  45. // ##############Заголовок###################
  46. echo '<div class="title">Просмотр архива '.$d['files'].'</div>';
  47. // ##############Содержимое###################
  48.  
  49. if (!$action) {
  50. $zip = new PclZip('../files/down/' . $d['files']);
  51. if (!$list = $zip->listContent()) die('Ошибка: ' . $zip->errorInfo(true));
  52. for ($i = 0; $i < sizeof($list); ++$i) {
  53. for (reset($list[$i]); $key = key($list[$i]); next($list[$i])) {
  54. $zfilesize = strstr($listcontent, '--size');
  55. $zfilesize = str_replace('--size:', '', $zfilesize);
  56. $zfilesize = str_replace($zfilesize, $zfilesize . '|', $zfilesize);
  57. $sizelist.= $zfilesize;
  58. $listcontent = "[$i]--$key:" . $list[$i][$key];
  59. $zfile = strstr($listcontent, '--filename');
  60. $zfile = str_replace('--filename:', '', $zfile);
  61. $zfile = str_replace($zfile, $zfile . '|', $zfile);
  62. $savelist.= $zfile;
  63. }
  64. }
  65.  
  66. $sizefiles2 = explode('|', $sizelist);
  67. $sizelist2 = array_sum($sizefiles2);
  68. $obkb = round($sizelist2 / 1024, 2);
  69. $preview = $savelist;
  70. $preview = explode('|', $preview);
  71. $count = count($preview) - 1;
  72. echo '<div class="podmenu">Всего файлов: ' . $count . '<br/>Вес распакованного архива: ' . $obkb . ' kb</div>';
  73. if (!isset($page)) $page = 1;
  74. $n = 0;
  75. $pages = ceil($count / $onpage);
  76. if (!$pages) $pages = 1;
  77. if ($page) $n = ($onpage * $page) - $onpage;
  78. if ($count == 0) echo 'Пусто...';
  79. $sizefiles = explode('|', $sizelist);
  80. $selectfile = explode('|', $savelist);
  81.  
  82. // ------------------------------------------------------------------------------------------
  83.  
  84. for ($i = 1; $i <= $onpage; ++$i) {
  85. if (empty($selectfile[$n])) {
  86. $n++;
  87. continue;
  88. }
  89.  
  90. $path = $selectfile[$n];
  91. $fname = preg_replace('/.*\[\/\]/', '', $path);
  92.  
  93. // $zdir = preg_replace('/\[\/\]?\[^\/\]*$/', '', $path);
  94.  
  95. //echo '<div class="menudiv">';
  96. echo '<a href="/down/zip.php?action=preview&amp;id=' . $id . '&amp;open=' . $path . '" class="menudiv">' . $fname . ' [' . round($sizefiles[$n] / 1024, 2) . 'kb]</a>';
  97. //if ($sizefiles[$n] != 0) echo ' [' . round($sizefiles[$n] / 1024, 2) . 'kb]';
  98. //echo '</div>';
  99. $n++;
  100. }
  101.  
  102. // ------------------------------------------------------------------------------------------
  103.  
  104. echo '<div class="menudiv"><br/>Страницы: ';
  105. $asd = $page - 2;
  106. $asd2 = $page + 3;
  107. if ($asd < $count && $asd > 0 && $page > 3) echo '<a href="zip.php?id=' . $id . '&amp;page=1">1</a> ... ';
  108. for ($i = $asd; $i < $asd2; $i++) {
  109. if ($i < $count && $i > 0) {
  110. if ($i > $pages) break;
  111.  
  112. if ($page == $i) echo '<b>[' . $i . ']</b> ';
  113. else echo '<a href="zip.php?id=' . $id . '&amp;page=' . $i . '">' . $i . '</a> ';
  114. }
  115. }
  116.  
  117. if ($i <= $pages) {
  118. if ($asd2 < $count) echo ' ... <a href="zip.php?id=' . $id . '&amp;page=' . $pages . '">' . $pages . '</a>';
  119. }
  120.  
  121. echo '</div>';
  122. }
  123.  
  124. // ##############Просмотр файла###################
  125.  
  126. if ($action == 'preview') {
  127. $open = $_GET['open'];
  128. if (strpos($open, '..') !== false or strpos($open, './') !== false) {
  129. err('В хакера решил поиграть?');
  130. include '../../system/footer.php';
  131.  
  132. exit();
  133. }
  134.  
  135. $zip = new PclZip('../files/down/' .$d['files']);
  136. $content = $zip->extract(PCLZIP_OPT_BY_NAME, $open, PCLZIP_OPT_EXTRACT_AS_STRING);
  137. $content = $content[0]['content'];
  138. $preview2 = explode("\n", $content);
  139. $count = count($preview2);
  140. echo '<div class="menudiv">Файл: ' . $open . '</div>';
  141. $eX = strtolower(strrchr($open, '.'));
  142. $php = array(
  143. '.php',
  144. '.pl',
  145. '.js',
  146. '.jsp',
  147. '.html',
  148. '.xhtml',
  149. '.xml',
  150. '.wml',
  151. '.asp',
  152. '.aspx'
  153. );
  154. $txt = array(
  155. '.txt',
  156. '.sql',
  157. '.dat',
  158. '.css',
  159. '.ini',
  160. '.function',
  161. '.htaccess',
  162. '.tpl'
  163. );
  164. $img = array(
  165. '.gif',
  166. '.jpg',
  167. '.jpeg',
  168. '.png',
  169. '.bmp',
  170. '.wbmp',
  171. '.ico',
  172. '.swf'
  173. );
  174. if (empty($content)) echo 'Выбранный файл пуст.<br/>';
  175. if (isset($_GET['img'])) {
  176. $ext = strtolower(substr($open, strrpos($open, '.') + 1));
  177. ob_end_clean();
  178. ob_clean();
  179. header("Content-type: image/$ext");
  180. header("Content-Length: " . strlen($content));
  181. header('Content-Disposition: inline; filename="' . $open . '"');
  182. echo $content;
  183. exit();
  184. }
  185.  
  186. if (in_array($eX, $php)) {
  187. $content = htmlspecialchars($content);
  188. echo (!empty($content) ? '<div class="podmenu">Строк: ' . $count . '</div><div class="podmenu"><pre class="prettyprint">' : '');
  189. if (!empty($content)) echo $content;
  190. else echo $content;
  191. }
  192. elseif (in_array($eX, $txt)) {
  193.  
  194. $content = htmlspecialchars($content);
  195.  
  196. echo (!empty($content) ? '<div class="podmenu">Строк: ' . $count . '</div><div class="podmenu">' : '');
  197. if (!empty($content)) echo '<pre class="prettyprint">' . wordwrap($content, 75, '<br/>') . '</pre>';
  198. else echo '<div style="background:#dedede; color:#727272; overflow: auto;"><pre class="prettyprint">' . wordwrap($content, 75, '<br/>') . '</pre></div>';
  199. }
  200. elseif (in_array($eX, $img)) {
  201. echo '<img src="?action=preview&amp;id=' . $id . '&amp;open=' . $open . '&amp;img" alt=""/><br/>';
  202. }
  203. else {
  204. echo 'Невозможно прочесть файл!<br/>';
  205. }
  206. }
  207. echo '</pre></div>';
  208. echo '<a href="../down/file' . $id . '" class="menudiv">&laquo; К файлу</a>';
  209.  
  210. if (isset($_GET['action'])) echo '<a href="../down/zip.php?id=' . $id . '" class="menudiv">&laquo; К просмотру архива</a>';
  211. require_once ('../system/footer.php');
  212. //die
  213. ?>
Advertisement
Add Comment
Please, Sign In to add comment