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

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

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
твующем тэге 
задать параметр: enctype=multipart/form-data После этого данные, полученные от нашей формы, будут разбиты на несколько бло- ков информации (по одному на каждый элемент формы). Каждый такой блок очень похож на обычную посылку "заголовки-данные" протокола HTTP: -----------------Идентификатор_начала\n Content-Disposition: form-data; name="имя" [;другие параметры]\n \n значение\n Браузер автоматически формирует строку Идентификатор_начала из расчета, что- бы она не встречалась ни в одном из передаваемых файлов (и ни в одном из других полей формы). Это означает, что сегодня идентификатор будет одним, а завтра, воз- можно, совсем другим. Тэг выбора файла Давайте просмотрим, какой тэг надо вставить в форму, чтобы в ней появился элемент управления загрузкой файла — текстовое поле с кнопкой Browse справа. Таким тэ- гом является разновидность : Сценарию вместе с содержимым файла передается и некоторая другая информация, а именно: r размер файла; r имя файла в системе клиента; r тип файла. Глава 28. Загрузка файлов на сервер 391 Скоро мы узнаем, как извлечь эту информацию в программе на PHP. Закачка файлов и безопасность Возможно, вы обратили внимание на то, что у последнего приведенного тэга отсутствует атрибут value. То есть когда пользователь открывает стра- ницу, он никогда не увидит в элементе закачки ничего, кроме пустой строки. Понача- лу это кажется довольно неприятным ограничением: в самом деле, мы ведь можем задавать параметры по умолчанию для, скажем, текстового поля. Давайте задумаемся, почему разработчики HTML пошли на такое исключение из об- щего правила. Наверное, вы слышали о возможностях DHTML (Dynamic HTML — Динамический HTML) и JavaScript. С их помощью можно создавать интерактивные страницы, реагирующие на действия пользователя в реальном времени. Например, можно написать код на JavaScript, который запускается, когда пользователь нажимает какую-нибудь кнопку в форме на странице, или когда он вводит текст в одно из тек- стовых полей. Применение DHTML не ограничивается упомянутыми возможностями. В частности, умелый программист, владеющий, к примеру, JavaScript, может созда- вать страницы, которые будут автоматически формировать и отсылать на сервер формы без ведома пользователя. В принципе, в этом нет никакого "криминала": ведь все данные, которые будут отосланы, сгенерированы этой же страницей. Что же получится, если разрешить тэгу иметь параметр по умолчанию? Предположим, пользователь хранит все свои пароли в "засекреченном" файле C:\passwords.txt. Тогда "пассворднэппер" может написать на JavaScript и встроить в страницу программу, которая создает и отправляет на "свой" сервер форму незаметно для пользователя. При этом достаточно, чтобы в форме присутствовало единственное поле закачки файла с проставленным параметром value=C:\passwords.txt. Естественный вывод: в случае, если бы параметр по умолчанию был разрешен для тэга закачки файла, то программист на JavaScript, "заманив" на свою страницу поль- зователя, мог бы иметь возможность скопировать любой файл с компьютера клиента. Теперь вы понимаете, почему тэг не допускает использования атрибута value?.. Поддержка закачки в PHP Так как PHP специально разрабатывался как язык для Web-приложений, то, естест- венно, он "умеет" работать как с привычными нам, так и с multipart-формами. Более того, он также поддерживает закачку файлов на сервер. Часть V. Приемы программирования на PHP 392 Простые имена полей закачки Как я уже говорил, интерпретатору совершенно все равно, в каком формате приходят данные из формы. Он умеет их обрабатывать и "рассовывать" по переменным в лю- бом формате. Однако данные одного специального поля формы — а именно, поля закачки — он интерпретирует особым образом. Пусть у нас есть multipart-форма, а в ней — поле закачки файла:
П
 
<<-[Весь Текст]
Страница: из 287
 <<-