- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
<?php
abstract class Upload {//Клас загрузка файлов на сервер //Класс, который не имеет реализации.
private $dir;//директория для загрузки
private $mime_type;//Некий mime_type
public function __construct($dir, $mime_type) {
$this->dir = $dir;
$this->mime_type = $mime_type;
}
public function UploadFile($file) {
if (!$this->isSequrity($file)) return false;
$dirupload = $_SERVER['DOCUMENT_ROOT']."/".$this->dir."/".$file['name'];
return move_uploaded_file($file['tmp_name'], $dirupload);
}
protected function isSequrity($file) {
$blacklist = array (".php", ".php3", ".php4", ".html", ".htm", ".exe", ".js", ".css");//Запрещено
foreach ($blacklist as $item) {
if (preg_match("/$item\$/i", $file["name"])) return false;
}
$type = $file["type"];//тип файла
$mime_types = $this->mime_type;
$i = 0;
foreach ($mime_types as $k => $v) {
if ($type == $v) break;//Если тип файла найден(равняется типу, что файл какого типа, то выходим из цикла.
if ($i + 1 === count($this->mime_type)) return false;
$i++;
}
$size = $file["size"];
if ($size > 2048000) return false;
return true;
}
}
?>
Код мне прислал адепт пРуссакова. С вопросом, "че не раблотает?". Собственно орфография, пунктуация и стили сохранены. Если кто-то будет спрашивать "чем плохи видеокурсы?", просто скиньте линку на данный код.