Просмотр файла download/include/down_file.php

Размер файла: 9.62Kb
  1. <?php
  2. $set['title'] = 'Добавление файла';
  3. include H.'engine/includes/head.php';
  4.  
  5. $upload_max_filesize=ini_get('upload_max_filesize');
  6. if (preg_match('#([0-9]*)([a-z]*)#i',$upload_max_filesize,$varrs))
  7. {
  8. if ($varrs[2]=='M')$upload_max_filesize=$varrs[1]*1048576;
  9. elseif ($varrs[2]=='K')$upload_max_filesize=$varrs[1]*1024;
  10. elseif ($varrs[2]=='G')$upload_max_filesize=$varrs[1]*1024*1048576;
  11. }
  12.  
  13. $res = $sql->query("SELECT * FROM `down_files` WHERE `id` = '$id' AND `type` = 1 LIMIT 1")->fetch();
  14.  
  15. if (is_dir($res['dir'] . '/' . $res['name'])) {
  16. if (($res['field']) || $admin) {
  17. $al_ext = $res['field'] ? explode(', ', $res['text']) : array('rar', 'zip', 'pdf', 'nth', 'txt', 'tar', 'gz', 'jpg', 'jpeg', 'gif', 'png', 'bmp', '3gp', 'mp3', 'mpg', 'sis', 'thm', 'jar', 'jad', 'cab', 'sis', 'sisx', 'exe', 'msi');
  18. if (isset($_POST['submit'])) {
  19. $load_cat = $res['dir'] . '/' . $res['name'];
  20. $do_file = false;
  21. if ($_FILES['fail']['size'] > 0) {
  22. $do_file = true;
  23. $fname = strtolower($_FILES['fail']['name']);
  24. $fsize = $_FILES['fail']['size'];
  25. }
  26. if ($do_file) {
  27. $new_file = isset($_POST['new_file']) ? trim($_POST['new_file']) : null;
  28. $name = isset($_POST['text']) ? trim($_POST['text']) : null;
  29. $name_link = isset($_POST['name_link']) ? check(mb_substr($_POST['name_link'], 0, 200)) : null;
  30. $ext = format($_FILES['fail']['name']);
  31. if (!empty($new_file)) {
  32. $fname = $new_file . $ext;
  33. }
  34. if (empty($name))
  35. $name = $fname;
  36. if (empty($name_link))
  37. $err = 'Не заполнено поле.';
  38. if ($fsize > $upload_max_filesize)
  39. $err = 'Вес файла превышает ' . text::size_data($upload_max_filesize);
  40. if (!in_array($ext, $al_ext))
  41. $err = 'Запрещенный тип файла "'.$ext.'"! К отправке разрешены только файлы, имеющие следующее расширение: ' . implode(', ', $al_ext);
  42. if (strlen($fname) > 30)
  43. $err = 'Длина названия файла и названия для сохранеия не должна превышать 30 символов';
  44. if (preg_match("#[^a-z0-9.()+_-]#", $fname))
  45. $err = 'В названии файла присутствуют недопустимые символы. Разрешены только латинские символы, цифры и некоторые знаки ( .()+_- ). Запрещены пробелы.';
  46. if (isset($err)) {
  47. echo '<div class="err">'.$err.'<a href="index.php?act=down_file&amp;id=' . $id . '">Повторить</a></div>';
  48. }
  49. else {
  50. if (file_exists("$load_cat/$fname"))
  51. $fname = $time . $fname;
  52.  
  53. if ((move_uploaded_file($_FILES["fail"]["tmp_name"], "$load_cat/$fname")) == true) {
  54. @chmod("$fname", 0777);
  55. @chmod("$load_cat/$fname", 0777);
  56. echo '<div class="msg">Файл прикреплен';
  57. if ($set_down['mod'] && !$admin) {
  58. echo ' и если пройдет модерацию - будет добавлен в загруз центр.';
  59. $type = 3;
  60. }
  61. else
  62. $type = 2;
  63. echo '</div>';
  64. $fname = my_esc($fname);
  65. $text = isset($_POST['opis']) ? trim($_POST['opis']) : null;
  66. $name = my_esc(mb_substr($name, 0, 200));
  67. $sql->query("INSERT INTO `down_files` SET `refid`='$id', `dir`='$load_cat', `time`='$time',`name`='$fname', `text` = '$name_link',`rus_name`='$name', `type` = '$type',`user_id`='$user[id]'");
  68. $file_id = mysqli_insert_id($sql->db);
  69. if (!empty($text)) {
  70. $files = fopen('about/' . $file_id . '.txt', 'w+');
  71. flock($files, LOCK_EX);
  72. fputs($files, $text);
  73. flock($files, LOCK_UN);
  74. fclose($files);
  75.  
  76. }
  77. require_once H.'engine/classes/class_upload.php';
  78. $handle = new upload($_FILES['screen']);
  79. if ($handle->uploaded) {
  80. $dir = mkdir("$screenroot/$file_id", 0777);
  81. if ($dir = true)
  82. chmod("$screenroot/$file_id", 0777);
  83. $handle->file_new_name_body = $time;
  84. $handle->allowed = array('image/jpeg', 'image/gif', 'image/png');
  85. $handle->file_max_size = $upload_max_filesize;
  86. $handle->file_overwrite = true;
  87. $handle->image_resize = true;
  88. $handle->image_x = 240;
  89. $handle->image_ratio_y = true;
  90. $handle->image_convert = 'jpg';
  91. $handle->process($filesroot . '/screen/' . $file_id . '/');
  92. if ($handle->processed) {
  93. echo '<div class="msg">Скриншот прикреплен</div>';
  94. }
  95. //else
  96. // echo '<div class="err">Скриншот не прикреплен: ' . $handle->error . '</div>';
  97. }
  98. else
  99. echo '<div class="err">Скриншот не прикрeплен</div>';
  100. //if ($admin) {
  101. echo '<div class="menu"><a href="index.php?act=view&amp;id=' . $file_id . '">К файлу</a></div>';
  102. $dirid = $id;
  103. $sql2 = '';
  104. $i = 0;
  105. while ($dirid != '0' && $dirid != "") {
  106. $res_down = $sql->query("SELECT `refid` FROM `down_files` WHERE `type` = 1 AND `id` = '$dirid' LIMIT 1")->fetch();
  107. if ($i)
  108. $sql2 .= ' OR ';
  109. $sql2.= '`id` = \'' . $dirid . '\'';
  110. $dirid = $res_down['refid'];
  111. ++$i;
  112. }
  113. $sql->multi("UPDATE `down_files` SET `total` = `total`+1 WHERE $sql2;OPTIMIZE TABLE `down_files`");
  114. if (file_exists(H.'engine/files/tmp/download[dir='.$id.'].swc'))
  115. unlink(H.'engine/files/tmp/download[dir='.$id.'].swc');
  116. //}
  117. echo '<div class="menu"><a href="index.php?act=down_file&amp;id=' . $id . '">Выгрузить еще</a></div>';
  118. echo '<div class="menu"><a href="index.php?id=' . $id . '">Вернуться в категорию</a></div>';
  119. }
  120. else
  121. echo '<div class="err">Ошибка прикрепления файла.<br /><a href="index.php?act=down_file&amp;id=' . $id . '">Повторить</a></div>';
  122. }
  123. }
  124. else
  125. echo '<div class="err">Не выбран файл.<br /><a href="index.php?act=down_file&amp;id=' . $id . '">Повторить</a></div>';
  126.  
  127.  
  128. }
  129. else {
  130. echo '<div class="fmenu">' . text::output($res['rus_name']) . '</div>';
  131. echo '<div class="post"><form action="index.php?act=down_file&amp;id=' . $id . '" method="post" enctype="multipart/form-data">
  132. Файл<span class="status">*</span>:<br /><input type="file" name="fail"/><br />
  133. Сохранить как (max. 30, без расширения):<br /><input type="text" name="new_file"/><br />
  134. Скриншот:<br /><input type="file" name="screen"/><br />
  135. Название файла (мах. 200):<br /><input type="text" name="text"/><br />
  136. Ссылка для скачки файла (мах. 200)<span class="red">*</span>:<br /><input type="text" name="name_link" value="Скачать файл"/><br />
  137. Описание (max. 500)<br /><textarea name="opis"></textarea>';
  138. echo '<br /><input type="submit" name="submit" value="Выгрузить"/></form>';
  139. echo '</div><div class="p_m"><small>Max. вес: ' .text::size_data($upload_max_filesize) . ', расширения: ' . implode(', ', $al_ext) . '<br />Скриншот будет автоматически преоброзаван в картинку, шириной не превышающую 240px (высота будет вычислина автоматически)</small></div>';
  140. echo '<div class="p_t"><a href="index.php?id=' . $id . '">Назад</a></div>';
  141.  
  142. }
  143. }
  144. else
  145. echo 'Доступ закрыт<br /><a href="index.php?id=' . $id . '">К категории</a>';
  146. }
  147. else
  148. echo 'Каталог не существует<br /><a href="index.php">К категориям</a>';