Выбрать главу
Рис. 9.1.  Пример формы для загрузки файла на сервер

Теперь нужно написать скрипт, который будет обрабатывать полученный файл.

Вся информация о загруженном на сервер файле содержится в глобальном массиве $_FILES. Этот массив появился начиная с PHP 4.1.0. Если включена директива register_globals, то значения переданных переменных доступны просто по их именам.

Если мы загрузили с компьютера-клиента файл с именем critics.htm  размером 15136 байт, то скрипт с единственной командой print_r($_FILES); выведет на экран следующее:

Array ( [myfile] =>

Array ( [name] => critics.htm

[type] => text/html

[tmp_name] => C:\WINDOWS\TEMP\php49F.tmp

[error] => 0

[size] => 15136

)

)

Вообще говоря, массив $_FILES всегда имеет следующие элементы:

- $_FILES['myfile']['name'] - имя, которое имел файл на машине клиента.

- $_FILES['myfile']['type'] - mime-тип отправленного файла, если браузер предоставил эту информацию. В нашем примере это text/html.

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

- $_FILES['myfile']['tmp_name'] - временное имя файла, под которым он был сохранен на сервере.

- $_FILES['myfile']['error'] - код ошибки, появившейся при загрузке.

Здесь 'myfile' - это имя элемента формы, с помощью которого была произведена загрузка файла на сервер. То есть оно может быть другим, если элемент формы назвать иначе. Но вот другие ключи (name, type и т. д.) остаются неизменными для любой формы.

Если register_globals=On, то доступны также дополнительные переменные, такие как $myfile_name, которая эквивалентна $_FILES['myfile']['name'], и т.п.

 Ошибок при загрузке в PHP выделяют пять типов и соответственно $_FILES['myfile']['error'] может иметь пять значений:

0 - ошибки не произошло, файл загружен успешно

1 - загружаемый файл превышает размер, установленный директивой upload_max_filesize в файле настроек php.ini

2 - загружаемый файл превышает размер, установленный элементом MAX_FILE_SIZE формы html

3 - файл был загружен частично

4 - файл загружен не был

По умолчанию загруженные файлы сохраняются во временной директории сервера, если другая директория не указана с помощью опции upload_tmp_dir в файле настроек php.ini. Переместить загруженный файл в нужную директорию можно с помощью функции move_uploaded_file().

Функция move_uploaded_file() имеет следующий синтаксис:

bool move_uploaded_file (временное_имя_файла,

место_назначения )

Эта функция проверяет, действительно ли файл, обозначенный строкой временное_имя_файла, был загружен через механизм загрузки HTTP методом POST. Если это так, то файл перемещается в файл, заданный параметром место_назначения (этот параметр содержит как путь к новой директории для хранения, так и новое имя файла).

Если временное_имя_файла задает неправильный загруженный файл, то никаких действий произведено не будет, и move_uploaded_file() вернет FALSE. То же самое произойдет, если файл по каким-то причинам не может быть перемещен. В этом случае интерпретатор выведет соответствующее предупреждение. Если файл, заданный параметром место_назначения, существует, то функция move_uploaded_file() перезапишет его.

<?

/* В версиях PHP, более ранних,

чем 4.1.0, вместо массива

$_FILES нужно использовать

массив $HTTP_POST_FILES */

$uploaddir = 'c:/uploads/';

// будем сохранять загружаемые

// файлы в эту директорию

$destination = $uploaddir .

$_FILES['myfile']['name'];

// имя файла оставим неизменным

print "<pre>";

if (move_uploaded_file(

$_FILES['myfile']['tmp_name'],

$destination)) {

/* перемещаем файл из временной папки

в выбранную директорию для хранения */

print "Файл успешно загружен <br>";

} else {

echo "Произошла ошибка при загрузке файла.

Некоторая отладочная информация:<br>";

print_r($_FILES);

}

print "</pre>";

?>

Заключение

Подведем итоги. В этой лекции мы изучили, как создавать файлы с помощью языка PHP, как записывать данные в файлы посредством PHP, как считывать из них информацию различными способами, как проверять существование и доступность файла для записи и чтения. Кроме того, мы рассмотрели задачу загрузки файла на сервер и обсудили основные связанные с ней переменные и функции языка PHP.

Базы данных и СУБД. Введение в SQL

В данной лекции мы рассмотрим основные понятия теории баз данных и познакомим читателей с системой управления базами данных MySql, способами работы с ней, ее особенностями и реализацией языка запросов SQL в этой СУБД. В основе приводимых в лекции примеров лежит информационная модель виртуального музея истории информатики. Эта модель есть набор коллекций описания исторических личностей, экспонатов музея (артефактов), статей и изображений.

Базы данных: основные понятия

В жизни мы часто сталкиваемся с необходимостью хранить какую-либо информацию, а потому часто имеем дело и с базами данных. Например, мы используем записную книжку для хранения номеров телефонов своих друзей и планирования своего времени. Телефонная книга содержит информацию о людях, живущих в одном городе. Все это своего рода базы данных. Ну а раз это базы данных, то посмотрим, как в них хранятся данные. Например, телефонная книга представляет собой таблицу (табл. 10.1).

В этой таблице данные – это собственно номера телефонов, адреса и ФИО., т.е. строки «Иванов Иван Иванович», «32-43-12» и т.п., а названия столбцов этой таблицы, т.е. строки «ФИО», «Номер телефона» и «Адрес» задают смысл этих данных, их семантику.

Иванов Иван Иванович

32-43-12

ул. Ленина, 12, 43

Ильин Федор Иванович

32-32-34

пр. Маркса, 32, 45

Теперь представьте, что записей в этой таблице не две, а две тысячи, вы занимаетесь созданием этого справочника и где-то произошла ошибка (например, опечатка в адресе). Видимо, тяжеловато будет найти и исправить эту ошибку вручную. Нужно воспользоваться какими-то средствами автоматизации. Для управления большим количеством данных программисты (не без помощи математиков) придумали системы управления базами данных (СУБД). По сравнению с текстовыми базами данных электронные СУБД имеют огромное число преимуществ, от возможности быстрого поиска информации, взаимосвязи данных между собой до использования этих данных в различных прикладных программах и одновременного доступа к данным нескольких пользователей.

Для точности дадим определение базы данных, предлагаемое Глоссарий.ру

База данных – это совокупность связанных данных, организованных по определенным правилам, предусматривающим общие принципы описания, хранения и манипулирования, независимая от прикладных программ. База данных является информационной моделью предметной области. Обращение к базам данных осуществляется с помощью системы управления базами данных (СУБД). СУБД обеспечивает поддержку создания баз данных, централизованного управления и организации доступа к ним различных пользователей.