<?php
// 3020.ru - качай скрипты тут
require('../sys/system.php');
// Добавляем глобальную переменную, нужна для работы
define('R', $_SERVER['DOCUMENT_ROOT']);
// Создаем разделы в файле
switch($act) {
default:
if(isset($_FILES['file']['name'])){
// Проверка на количество
if(count($_FILES['file']['name']) > 20){
$_SESSION['err'] = 'Максимальное количество 20 файлов.';
header('location: /'); exit;
}
// Настройка загрузки файлов
$maxsize = 10; //максимальный размер файла в мб
$whitelist = ['jpg', 'jpeg', 'png', 'svg', 'gif']; //Допустимые расширения
$dir = R.'/files'; //Папка, в которую будут загружаться фотографии
/// нумеруем ответы
$goods = NULL; // Что-бы не вылетела ошибка
if(isset($_GET['add'])){
// Получаем id текущей записи (для записи токена)
$idk = functions::ints($_GET['add']); // фильтруем ид
// Просмотр данны канала
$row = DB::$dbs->queryFetch('SELECT `url1`,`url2`,`counter` FROM `kanal` WHERE `id` = ? LIMIT 1', [$idk]);
// Смотрим на привышение файлов в канале
if($row['counter'] > 30){
$_SESSION['err'] = 'Максимальное количество картинок 30.';
header('location: /'.$row['url1'].'/'.$row['url2'].'/'); exit;
}
}else{
// Создаем канал картинок
DB::$dbs->query('INSERT INTO `kanal` SET `ip` = ?, `url1` = ?, `url2` = ?, `time` = ?, `idus` = ?',[$IP,functions::url1(1),functions::url1(10),time(),isset($user['id'])?$user['id']:0]);
// Получаем id текущей записи (для записи токена)
$idk = DB::$dbs->lastInsertId();
// Просмотр данны канала
$row = DB::$dbs->queryFetch('SELECT `url1`,`url2` FROM `kanal` WHERE `id` = ? LIMIT 1', [$idk]);
}
/// Перебор файлов
foreach ($_FILES["file"]["error"] as $key => $error) {
// Фильтруем сам файл
$name = functions::htmlred(basename($_FILES['file']['name'][$key]));
// Получаем разрешение файла
$indos = new SplFileInfo($name);
$ext = $indos->getExtension();
// Получаем вес файла
$size = $_FILES['file']['size'][$key];
// Если не допустимый вес файла
if ($size > (1048576 * $maxsize)){
$goods .= '<div style="color:red;">'.$name.' - не загружен (максимальный вес файла 10МБ).</div>';
}elseif(!in_array($ext, $whitelist)){
$goods .= '<div style="color:red;">'.$name.' - не загружен (разрешение файла).</div>';
}else{
// Проверка на ошибки с сервера
if ($error == UPLOAD_ERR_OK) {
// Фильтруем tmp
$tmp_name = functions::htmlred($_FILES["file"]["tmp_name"][$key]);
// Новое название файла
$avas = SETT[1].'-'.mt_rand(1,999).time().'.'.$ext;
// Начинаем загрузку файла
move_uploaded_file($tmp_name, "$dir/$avas");
// Оповещаем о загрузке
$goods .= '<div style="color:green;">'.$name.' - загружен.</div>';
// Считаем если файл создан
$ifi = 1;
// добавляем в канал картинку
DB::$dbs->query('INSERT INTO `images` SET `time` = ?, `name` = ?, `razr` = ?, `ip` = ?, `idkan` = ?, `idus` = ?',[time(),$avas,$ext,$IP,$idk,isset($user['id'])?$user['id']:0]);
// Обновляем стату в канале
DB::$dbs->query('UPDATE `kanal` SET `counter` = `counter` + 1 WHERE `id` = ? LIMIT 1', [$idk]);
}else{ // Тут вывод ошибок сервера
$goods .= '<div style="color:red;">'.$name.' - не загружен.</div>';
}
}
}
// Отправка ошибок
$_SESSION['good'] = $goods;
// Проверка на загруженный файл
if(count($ifi) == 0):
header('location: /'); exit;
else:
header('location: /'.$row['url1'].'/'.$row['url2'].'/'); exit;
endif;
}else{
$_SESSION['err'] = 'Вы не выбрали файлы.';
header('location: /'); exit;
}
break;
}
?>