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

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

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
именно ее как разделитель. 
Далее алгоритм разбора должен быть следующим: в цикле мы пропускаем символы 
иден- 
тификатора и перевода строки, извлекаем подстроку имя="что-то" (не обращая 
внима- 
ния на Content-Disposition), дожидаемся двух символов перевода строки и затем 
считаем значением соответствующего поля все те данные, которые размещены до 
строки \nИдентификатор (или же до конца, если такой строки больше нет). Как ви- 

дите, все довольно просто. 

Часть I. Основы Web-программирования 66 
Стандарт HTTP предписывает, чтобы перевод строки содержал два символа — 
\r\n, а не один \n. Как вы уже, наверное, чувствуете, существуют браузеры, 
которые об этом и не догадываются и посылают только один \n. Так что, будь- 
те готовы к тому, чтобы правильно обрабатывать и эту ситуацию. 
Тэг загрузки файла (file) 
Теперь вернемся к тому, с чего начали — к загрузке файлов. Сначала выясним, 
какой 
тэг надо вставить в форму, чтобы в ней появился соответствующий элемент 
управле- 
ния — поле ввода текста с кнопкой Browse справа. Таким тэгом является разновид- 

ность : 
 
Пусть пользователь выбрал какой-то файл (скажем, с именем каталог\ 
имя_файла) и нажал кнопку отправки. В этом случае для нашего элемента формы 
создается один блок примерно такого вида: 
----------------127462537625367\n 
Content-Disposition: form-data; name="имя_элемента"; 
A filename="каталог\имя_файла"\n \n 
........ 
Бинарные данные этого файла любой длины. 
Здесь могут быть совершенно любые 
байты без всякого ограничения. 
........ 
\n 
Мы видим, что сценарию вместе с содержимым файла передается и его имя в системе 

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

Глава 3. CGI изнутри 67 
Что такое Cookies и с чем их едят 
Сначала хотелось бы сказать пару слов насчет самого термина Cookies (это 
множест- 
венное число, произносится как "кукис" или, более "русифицировано", "куки"). В 
бук- 
вальном переводе слово звучит как "печенье", и почему компания Netscape так 
назва- 
ла свое изобретение, не совсем ясно. А поскольку писать "печенье" несколько 
неудобно, чтобы не вызывать несвоевременных гастрономических ассоциаций, везде, 

где можно, я буду применять именно слово Cookies, с большой буквы, во множест- 
венном числе и мужского рода. Кстати, в единственном числе это понятие 
записыва- 
ется Cookie и произносится на русский манер — "кука". 
Начну с примера. Скажем, мы хотим завести гостевую книгу: пользователь вводит 
свое имя, E-mail, адрес домашней странички (и другую информацию о себе), 
наконец, 
текст сообщения, и после нажатия на кнопку его мысль отправляется в путешествие 

по проводам и серверам, чтобы в конце концов попасть в некую базу данных на на- 

шем сервере и остаться там на веки вечные. М-да…. 
Теперь предположим, что эта наша гостевая книга — довольно часто посещаемое 
место, у нее есть постоянные пользователи, которые несколько раз на дню 
оставляют 
там свои сообщения. Что же — им придется каждый раз вводить свое имя, адрес 
электронной почты и другую информацию в пустые поля? Как бы сделать так, чтобы 
это все запоминалось где-то, чтобы даже при следующем запуске браузера нужные 
поля формы инициализировались автоматически, разумеется — у каждого пользова- 
теля индивидуально, тем, чем он заполнил их ранее? 
Чтобы этого добиться, в принципе существуют два метода. Оба они
 
<<-[Весь Текст]
Страница: из 287
 <<-