View file m/upl.php

File size: 4.66Kb
<?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;
}
?>