В нашей статье мы рассмотрим пример создания php скрипта загрузки файлов на сервер. Наш простой пример загрузки файлов будет иметь 2 файла: форма (form.html), php скрипт загрузки файлов (uploader.php).
Теперь разберем все детально. Сначала проанализируем файл формы form.html:
Как видите это простой html код, ничего сложного здесь нет, единственное, если форма будет загружать файлы на сервер, то должен быть прописан атрибут enctype=»multipart/form-data».
Наша форма будет выглядеть так:
Пример PHP скрипта загрузки файлов
Теперь разберемся с php файлом, который будет загружать файлы на сервер. Ниже предоставлен его исходный код:
Как работает PHP скрипт загрузки файлов?
uploader.php это простой php скрипт загрузки файлов на сервер, который будет загружать наши файлы в определенную директорию сайта, которая указывается строкой $target_path = ‘uploaded_files/’;
Далее мы перемещаем загруженный файл с помощью функции move_uploaded_file(), первый ее аргумент это наш загружаемый файл, второй это путь к папке сайта, в которую будем загружать файл.
Ну и само собой делаем элементарный вывод сообщений с помощью if/else, чтобы понятно было, загружен наш файл или нет.
Защита от хакерских взломов при загрузке файла
Мы рассмотрим не только защиту в плане хакерских взломов, но и другие нежелательные проблемы, возникающие при загрузке файлов на сервер.
PHP оболочка файла
Это первая проблема, связанная с загрузкой файлов на сервер. Когда загружаемый файл имеет оболочку php, и это не значит, что его расширение будет php. Он может иметь вид image.jpg (.gif, .png…). Но внутри выглядеть подобным образом:
Некоторые умельцы также могут выполнять команды на сервере с помощью серфинга по url:
Способ защиты:
Для защиты, можно реализовать MIME проверку файла. Ниже смотрите пример:
Данный кусок php кода проверяет, является ли загружаемый файл GIF файлом. Вставьте этот код перед php скриптом загрузки файлов. Естественно, вы можете поменять проверку на jpg, pngили другие нужные вам файлы.
По правде сказать, и этот способ защиты можно обойти, если послать заголовок header, с указаниями MIME. Для этого необходимо производить проверку наличия <?php… ?> тегов в загружаемом файле.
Ограничение размера загружаемого файла
Также могут возникнуть проблемы с большими размерами файлов, которые будут занимать ваше дисковое пространство. Для этого нужно написать ограничение на размер загружаемого файла.
Можно это сделать с помощью формы, для этого нужно добавить следующую строку в контекст html формы:
Это скрытое поле ввода ограничит размер загружаемого файла. Или можно сделать проверку размера файла средствами PHP.
Источник: sitear.ru