Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab1_php.doc
Скачиваний:
3
Добавлен:
27.08.2019
Размер:
113.15 Кб
Скачать

Лабораторная работа по PHP №1

Размещение файлов на сервере

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

Задание

1. Создать форму для загрузки файлов на сервер, необходимые элементы формы:

  • имя пользователя (input type=’text’)

  • электронный адрес пользователя (input type=’text’)

  • комментарий (textarea)

  • поле загрузки файла (input type=’file’)

2. Создать скрипт, обрабатывающий данные формы. Скрипт должен проверять данные, введенные пользователем. Все поля формы должны быть заполнены. Корректность электронного адреса должна быть проверена с помощью регулярных выражений. Некорректные данные игнорируются, пользователю выдается соответствующее сообщение. В случае успешной проверки, данные необходимо занести файл. Данные одной формы добавляются в файл в виде одной строки:

имя_пользователя|электронный_адрес|дата|комментарий|имя_файла|путь_к_файлу

Разделитель между полями: «|». В поле дата записывается текущая дата и время на момент поступления данных. Поле «имя_файла» содержит имя файла на машине пользователя, приславшего этот файл. Поле «путь_к_файлу» содержит относительный путь к файлу на сервере.

3. Создать скрипт, позволяющий пользователю просматривать список файлов, загруженных на сервер. Скрипт должен извлекать данные из файла, сформированного скриптом из п.2 и отображать их в виде таблицы со следующей шапкой:

Имя

Электронный адрес

Комментарий

Дата размещения

Файл

Данные столбца «Файл» должны быть гипертекстовыми ссылками на файлы, загруженные на сервер.

Теория и примеры

1 Загрузка (upload) файлов на сервер

Страница для загрузки файлов на сервер может быть создана с помощью специальной формы (пример 1):

Пример 1 Форма для загрузки файла на сервер

<!—-Тип кодирования данных, enctype, ДОЛЖЕН быть указан как показано в примере-->

<form enctype="multipart/form-data" action="__URL__" method="POST">

<!—- объявление MAX_FILE_SIZE должно предшествовать полю ввода файла-->

<input type="hidden" name="MAX_FILE_SIZE" value="30000" />

<!-- Имя данного элемента input задает индекс массива $_FILES -->

Send this file: <input name="userfile" type="file" />

<input type="submit" value="Send File" />

</form>

__URL__ указывает на PHP файл, обрабатывающий загрузку файла на сервер.

Скрытое поле MAX_FILE_SIZE устанавливает максимальный размер принимаемых файлов. Данная переменная устанавливается для браузера, но PHP также ее проверяет. Умышленно установить неправильное значение этой переменной на стороне клиента легко, так что никогда на нее не рассчитывайте. Значение в файле php.ini, отвечающее за максимальный размер загружаемого файла обойти нельзя. Этот элемент формы должен использоваться всегда, не против злоумышленников, а чтобы избавить пользователя от случайной загрузки слишком большого файла, который сервер все равно не сможет принять, из-за ограничения в php.ini.

Имейте ввиду, что атрибут enctype в форме для загрузки файла должен иметь значение "multipart/form-data", иначе загрузка работать не будет.

Глобальный массив $_FILES содержит информацию о загружаемом файле. Содержимое массива может выглядеть следующим образом. Имейте в виду, что имя переменной userfile используется для приведенной выше формы, оно может быть любым.

$_FILES['userfile']['name'] – имя файла на машине клиента

$_FILES['userfile']['type'] – mime тип файла, если браузер предоставил эту информацию (отсутствует в примере выше). Этот тип не может быть проверен на стороне сервера.

$_FILES['userfile']['size'] – размер в байтах загруженного файла

$_FILES['userfile']['tmp_name'] – полное имя файла, под которым сохранен загруженный файл для временного хранения на сервере

$_FILES['userfile']['error'] – код ошибки, возникшей при загрузке файла. Может принимать следующие значения:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]