View file forum/m/upload.php

File size: 4.19Kb
<?php
// Системный файл для надстроек
require('../flowap/system.php');
if (empty($user['id'])): header('location: /'); exit; endif;
// Системная настройка
define('R', $_SERVER['DOCUMENT_ROOT']);
// Основные разделы
switch ($act) {
	default:
		header('location: /'); exit;
	break;
	case 'fotos':
		if(!empty($_FILES['file']['name'])):
			$name = functions::htmlred(basename($_FILES['file']['name'])); // фильтруем
			$maxsize = 10; // максимальный размер в мегабайтах
			$whitelist = ['jpg', 'jpeg', 'png', 'svg', 'gif']; // разрешения
			$dir = R.'/files/fotos'; // куда загружаем
			$dirm = R.'/files/fotos/m'; // куда загружаем меньше версию
			$indos = new SplFileInfo($name);
			$ext = $indos->getExtension();
			$size = $_FILES['file']['size']; // вес файла
			//$raz = getimagesize($_FILES['file']['tmp_name']); // размеры изображения
			if ($size > (1048576 * $maxsize)): // если большой размер
				$err = "Максимальный вес файла $maxsize МБ.";
			elseif(!in_array($ext, $whitelist)): // если расширение файла не допустимо
				$err = 'Такое разрешение не допустимо.';
			endif;
			if(isset($err)):
				$_SESSION['err'] = $err;
				header('location: /sett/lic/'); exit;
			else:
				/*
				if(isset($user['fotos'])): // Если есть фото то старое удаляем
					unlink($dir.'/'.$user['fotos']);
					unlink($dirm.'/'.$user['fotos']);
				endif;
				*/
				$tmp_name = functions::htmlred($_FILES["file"]["tmp_name"]);
				$avas = mt_rand(1,999).time().'.'.$ext;
				move_uploaded_file($tmp_name, "$dir/$avas");
				if (functions::img_resize($dir.'/'.$avas, $dirm.'/'.$avas, 60, 60)):
					DB::$dbs->query('INSERT INTO `fotos` SET `file` = ?, `idus` = ?, `time` = ?',[$avas,$user['id'],time()]);
					$idl = DB::$dbs->lastInsertId();
					DB::$dbs->query('UPDATE `user` SET `fotos` = ? WHERE `id` = ?',[$idl,$user['id']]);
				else:
					unlink($dir.'/'.$avas);
					$_SESSION['err'] = 'Ошибка обработки изображений.';
					header('location: /sett/lic/'); exit;
				endif;
				$_SESSION['good'] = 'Успешно добавлено.';
				header('location: /sett/lic/'); exit;
			endif;
		else:
			header('location: /'); exit;
		endif;
	break;
	case 'them':
		$sql = DB::$dbs->queryFetch('SELECT `id`,`status`,`idus` FROM `forum_them` WHERE `id` = ? LIMIT 1', [$id]);
		if (empty($sql['id']) or $sql['status'] == 2 or $user['id'] != $sql['idus']): $_SESSION['err'] = 'Ошибка добавления.'; header('location: /'); exit; endif;
		if(!empty($_FILES['file']['name'])):
			$name = functions::htmlred(basename($_FILES['file']['name'])); // фильтруем
			$maxsize = 20; // максимальный размер в мегабайтах
			$whitelist = ['jpg', 'jpeg', 'png', 'svg', 'gif', 'zip', 'rar']; // разрешения
			$dir = R.'/files/them'; // куда загружаем
			$indos = new SplFileInfo($name);
			$ext = $indos->getExtension();
			$size = $_FILES['file']['size']; // вес файла
			if ($size > (1048576 * $maxsize)): // если большой размер
				$err = "Максимальный вес файла $maxsize МБ.";
			elseif(!in_array($ext, $whitelist)): // если расширение файла не допустимо
				$err = 'Такое разрешение не допустимо.';
			endif;
			if(isset($err)):
				$_SESSION['err'] = $err;
				header('location: /forum/t/'.$id.'/'); exit;
			else:
				$tmp_name = functions::htmlred($_FILES["file"]["tmp_name"]);
				$avas = mt_rand(1,999).time().'.'.$ext;
				move_uploaded_file($tmp_name, "$dir/$avas");
				DB::$dbs->query('INSERT INTO `forum_files` SET `idus` = ?, `idthem` = ?, `time` = ?, `file` = ?, `raz` = ?, `size` = ?',[$user['id'],$id,time(),$avas,$ext,$size]);
				$_SESSION['good'] = 'Успешно добавлено.';
				header('location: /forum/t/'.$id.'/'); exit;
			endif;
		else:
			header('location: /'); exit;
		endif;
	break;
}
?>