Файл: download/add_file.php
Строк: 114
<?php
/*
Скрипт загруз центра для JohnCMS
Автор: Максим (simba)
ICQ: 61590077
Сайт: http://symbos.su
R866920725287
Z117468354234
*/
define('_IN_JOHNCMS', 1);
$headmod = 'load';
$textl = 'Добавить файл';
require_once '../incfiles/core.php';
require_once '../incfiles/head.php';
require_once 'functions.php';
$cat = intval($_GET['cat']);
$dost = mysql_query("select * from `downpath` where id = '" . $cat . "';");
$dost = mysql_fetch_array($dost);
echo'<div class="phdr">Добавление файла</div>';
if($dost['dost'] && $user_id > 0){
if(!empty($ban)){
echo'<div class="rmenu">У вас есть бан!<br/> Во время бана к загрузке файлов доступа нет!</div>';
include_once '../incfiles/end.php';
exit;
}
if (isset($_POST['submit'])){
///////////////////////////////////////////////
////// Обработка отправленного файла //////////
///////////////////////////////////////////////
$error = false;
$fname = $_FILES['fail']['name'];
$fsize = $_FILES['fail']['size'];
$scrname = $_FILES['screen']['name'];
$scrsize = $_FILES['screen']['size'];
$opis = mysql_real_escape_string(trim($_POST['desc']));
$name = functions::check($_POST['name']);
$linkname = functions::check($_POST['linkname']);
$loaddir = $loadroot.'/'.$dost['way'];
$scrf = pathinfo($scrname, PATHINFO_EXTENSION);
//// ^получаем всё что нужно^ //////
//////////// Транслитируем имя файла в пригодное для сохранения в фс ///////
$ftp = name_replace($name);
/////// Определяем тип файла ///////
$typ = pathinfo($fname, PATHINFO_EXTENSION);
//////// Конечное имя файла для сохранения /////////
$ftp = $ftp.'.'.$typ;
if(is_file($loaddir.$ftp)) // Если файл существует, дописываем время в имя.
$ftp = time().$ftp;
$ftypes = explode(',',$dost['types']);
if(isset($opis) && $opis != '')
$opis = '[b]Описание:[/b] '.$opis;
if(empty($name))
$error[] = 'Не введено имя файла для отображения!';
if (!in_array('all', $ftypes) && !in_array($typ, $ftypes))
$error[] = 'Тип отправляемого вами файла ('.$typ.') не разрешён к загрузке!';
$ftypes = array('jpg', 'gif', 'png', 'jpeg'); // Типы скриншотов. Если нужны другие, пропишите через запятую.
if ($scrf && !in_array($scrf, $ftypes))
$error[] = 'Тип отправляемого вами скриншота ('.$scrf.') не разрешён к загрузке!';
$filesize = 1024* $down_setting['filesize'];
////// Проверяем размер файла ///////
if ($fsize > $filesize)
$error[] = 'Размер вашего файла ('.size_convert($fsize).') превышает допустимый размер ('.size_convert($filesize).')';
///// Проверяем размер скриншота /////
if ($scrsize > $filesize)
$error[] = 'Размер вашего скриншота ('.size_convert($scrsize).') превышает допустимый размер ('.size_convert($filesize).')';
////// На всякий случай проверяем название файла если не справился фильтр ///////
if (preg_match("/[^a-z0-9.()+_-]/i", $ftp))
$error[] = 'В названии файла <b>'.$ftp.'</b> присутствуют недопустимые символы<br/>Разрешены только латинские символы, цифры и некоторые знаки ( .()+_- )';
if(!$error){
// Сохраняем всё если нет ошибок.
if ((move_uploaded_file($_FILES["screen"]["tmp_name"], $filesroot.'/screens/'.$ftp.'.'.$scrf)) == true){
@chmod("screens/$ftp.$scrf", 0777);
echo "<div class='gmenu'>Скриншот загружен!</div>";
}
if ((move_uploaded_file($_FILES["fail"]["tmp_name"], $loaddir.$ftp)) == true){
@chmod("$save", 0777);
echo "<div class='gmenu'>Спасибо! Файл успешно загружен!</div>";
echo "<div class='rmenu'>После прохождения модерации файл будет доступен для просмотре всем пользователям!</div>";
$name = $name.'||||'.$linkname;
mysql_query("INSERT INTO `downfiles` SET
`pathid` = '" . $cat . "',
`way` = '".$dost[way].$ftp."',
`name` = '".$name."',
`desc` = '".$opis."',
`time` = '" . time() . "',
`gol` = '',
`login` = '".$login."',
`user_id` = '".$user_id."',
`status` = 0;");
$rid = mysql_insert_id();
if($scrf){
mysql_query("INSERT INTO `downscreen` SET
`fileid` = '".$rid."',
`way` = '".$ftp.".".$scrf."';");
}
}else{
echo "<div class='rmenu'>Ошибка при загрузке файла</div>";
}
}else{
// Найдены ошибки. Уведомляем юзера о них.
echo functions::display_error($error);
echo '<div class="menu"><a href="add_file.php?cat='.$cat.'">Повторить</a></div>';
include_once '../incfiles/end.php';
exit;
}
}else{
///////////////////////////////////////////////
////////////// Форма выбора файла /////////////
///////////////////////////////////////////////
$set_download = unserialize($datauser['set_forum']);
echo '<div class="rmenu">Обязательные поля отмечены звёздочкой! (*)</div>';
echo '<form name="add_file" action="add_file.php?cat='.$cat.'" method="post" enctype="multipart/form-data">';
echo'<div class="menu"><b>*</b> Выберите файл:<br/><input type="file" name="fail"/><br/>
<small>[!] Допустимые типы файлов в данной папке: <b>'.$dost['types'].'</b></small></div><div class="menu">
Выберите скриншот:<br/><input type="file" name="screen"/><br/>
<small>[!] Допустимые типы файлов: <b>jpg,gif,png</b></small></div><div class="menu">
<b>*</b> Имя для отображения:<br/><input type="text" name="name" value=""/></div>
<div class="menu">
Имя для ссылки скачать:<br/><input type="text" name="linkname" value=""/><br/><small>Отображается вместо "Скачать основной файл"</small></div>
<div class="menu"><b>*</b> Описание файла: <br/>
<small>Пожалуйста, описывайте файл максимально точно! Не заставляйте качающих догадываться. :)</small><br />';
if(!$is_mobile)
echo bbcode::auto_bb('add_file', 'desc');
echo '<textarea cols="' . $set_user['field_w'] . '" rows="' . $set_user['field_h'] . '" name="desc"></textarea><br/>
</div><div class="menu">
<small>[!] Размеры данного поля настроиваются в настройках форума</small></div>';
echo'<div class="menu"><input type="submit" name="submit" value="Загрузить"/></div></form>';
}
echo'<div class="gmenu"><a href="dir_' . $cat . '.html">Назад в папку</a></div>';
}else{
echo'<div class="rmenu">Вы не авторизованы или загрузка файлов в данную директорию запрещена!</div>';
}
require_once '../incfiles/end.php';
?>