Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
r> 
 
 
$Img) {?> 
 
 
alt="Добавлена " 
> 
 
 
Конечно, этот сценарий далеко не идеален (например, он не поддерживает удаление 

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

альбома и его просмотр) в одной программе. В реальной жизни, конечно, за каждую 

из них должен отвечать отдельный сценарий (первый из них, наверное, будет 
требо- 
вать от пользователя прохождения авторизации, чтобы добавлять фотографии в аль- 

бом могли лишь привилегированные пользователи). 
Обратите внимание на то, как этот сценарий оформлен. В самом начале нахо- 
дится весь код на PHP, который, собственно, и работает с данными фотоаль- 
бома. В этом коде в принципе нет никаких указаний на то, как должна быть от- 
форматирована страница. Его задача — просто сгенерировать данные. 
Наоборот, тот текст, который следует после закрывающей скобки ?>, содержит 

Глава 28. Загрузка файлов на сервер 
395 
минимум кода на PHP. Его главная задача — оформить страницу так, чтобы 
она выглядела красиво. У меня нет никаких других стимулов, кроме как эконо- 
мии типографской краски, чтобы не разнести данные блоки по разным файлам. 
Мы еще вернемся к такому подходу в одной из следующих глав. 
Сложные имена полей 
Как вы, наверное, помните, элементы формы могут иметь имена, выглядящие, как 
эле- 
менты массива: A[10], B[1][text] и т. д. До недавнего времени (в третьей версии 
PHP) 
это касалось только "обычных" полей, но не полей закачки файлов. К счастью, в 
PHP 
версии 4 все изменилось в лучшую сторону. 
Давайте применим указанные возможности в следующем примере формы и опреде- 
лим, какие переменные создаст PHP при ее отправке на сервер. 

Выберите тип файлов в вашей системе:

Текстовый файл:
Бинарный файл:
Картинка:
После того как программа script.php примет данные из формы, PHP создаст для нее следующие переменные: r ассоциативный массив $File, ключи которого — text, bin и pic, а соответст- вующие значения — имена временных файлов на сервере, созданных PHP при за- грузке; r массив $File_name все с теми же ключами и значениями — именами файлов в системе пользователя; r массив $File_type с теми же ключами и значениями — типами соответствую- щих файлов; r массив $File_size со значениями — размерами этих файлов. Мы видим, информация об индексах в именах полей формы попала в ключи соответ- ствующих массивов и сохранилась в них. Вы можете убедиться в том, что перемен- ные действительно инициализированы, воспользовавшись вызовом функции Dump($GLOBALS), код которой приведен в конце главы 11, и в полезности которой вы теперь можете убедиться на примере. Еще раз напоминаю, что PHP версии 3 неправильно работает с подобными именами полей. Учитывайте это, если собираетесь использовать старый ин- терпретатор. Часть V. Приемы программирования на PHP 396 Проблемы со сложными именами Но не все так восхитительно, как может показаться на первый взгляд. Беда в том, что описанный механизм работает замечательно, лишь когда мы задействуем элементы одномерных массивов в качестве имен полей формы. В случае же многомерных мас- сивов дела обстоят несколько хуже. Правда, многомерные массивы используются при закачке значительно реже, но все равно, мой долг — предупредить вас и уберечь от возможного недоразумения. Итак, напишем форму:
 
<<-[Весь Текст]
Страница: из 287
 <<-