Главная » Полезные статьи » Язык PHP » PHP Скрипт загрузки файлов
Распечатать статью

PHP Скрипт загрузки файлов

В нашей статье мы рассмотрим пример создания php скрипта загрузки файлов на сервер. Наш простой пример загрузки файлов будет иметь 2 файла: форма (form.html), php скрипт загрузки файлов (uploader.php).

Теперь разберем все детально. Сначала проанализируем файл формы form.html:

<html>
<body>
<form action=«uploader.php» method=«post»
enctype=«multipart/form-data»>
         <label for=«file»>Filename:</label>
        <input type=«file» name=«file» id=«file» />
        <br />
        <input type=«submit» name=«submit» value=«Submit» />
</form>
</body>
</html>

Как видите это простой html код, ничего сложного здесь нет,  единственное, если форма будет загружать файлы на сервер, то должен быть прописан атрибут enctype=»multipart/form-data».

Наша форма будет выглядеть так:

форма загрузки файлов на сервер

Пример PHP скрипта загрузки файлов

Теперь разберемся с php файлом, который будет загружать файлы на сервер. Ниже предоставлен его исходный код:

 

// Where the file is going to be placed
$target_path = ‘uploaded_files/’;
/* Add the original filename to our target path.
Result is «uploaded_files/filename.extension» */
$target_path = $target_path . basename( $_FILES['file']['name']);
if(move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) {
    echo «The file ».  basename( $_FILES['file']['name']).
    « has been uploaded»;
else{
    echo «There was an error uploading the file, please try again!»;
}

Как работает PHP скрипт загрузки файлов?

uploader.php это простой php скрипт загрузки файлов на сервер, который будет загружать наши файлы в определенную директорию сайта, которая указывается строкой $target_path = ‘uploaded_files/’;

Далее мы перемещаем загруженный файл с помощью функции move_uploaded_file(), первый ее аргумент это наш загружаемый файл, второй это путь к папке сайта, в которую будем загружать файл.

Ну и само собой делаем элементарный вывод сообщений с помощью if/else, чтобы понятно было, загружен наш файл или нет.

Защита от хакерских взломов при загрузке файла

Мы рассмотрим не только защиту в плане хакерских взломов, но и другие нежелательные проблемы, возникающие при загрузке файлов на сервер.

PHP оболочка файла

Это первая проблема, связанная с загрузкой файлов на сервер. Когда загружаемый файл имеет оболочку php, и это не значит, что его расширение будет php.  Он может иметь вид image.jpg (.gif, .png…). Но внутри выглядеть подобным образом:

 

<?php
   system($_GET['command']);
?>

Некоторые умельцы также могут выполнять команды на сервере с помощью серфинга по url:

 

$ curl http://server/uploads/shell.php?command=any_unix_command

Способ защиты:

Для защиты, можно реализовать MIME проверку файла. Ниже смотрите пример:

 

if($_FILES['file']['type'] != «image/gif») {
      echo «Sorry, we only allow uploading GIF images»;
      exit;
}

Данный кусок php кода проверяет, является ли загружаемый файл GIF файлом. Вставьте этот код перед php скриптом загрузки файлов. Естественно, вы можете поменять проверку на jpg, pngили другие нужные вам файлы.

По правде сказать, и этот способ защиты можно обойти, если послать заголовок header, с указаниями MIME. Для этого необходимо производить проверку наличия <?php… ?> тегов в загружаемом файле.

Ограничение размера загружаемого файла

Также могут возникнуть проблемы с большими размерами файлов, которые будут занимать ваше дисковое пространство. Для этого нужно написать ограничение на размер загружаемого файла.

Можно это сделать с помощью формы, для этого нужно добавить следующую строку в контекст html формы:

 

<input type=‘hidden’ name=‘MAX_FILE_SIZE’ value=’2000000′>

Это скрытое поле ввода ограничит размер загружаемого файла. Или можно сделать проверку размера файла средствами PHP.

Источник:  sitear.ru

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи