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

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

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

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
кций работы со строками (которых в PHP великое множество), и 
этот прием действительно будет работать. Однако, прежде чем браться за ненужное 

дело, давайте посмотрим, что нам предлагает сам язык. 
Трансляция полей формы 
в переменные 
Итак, мы не хотим заниматься прямым разбором переменной окружения 
QUERY_STRING, в которой хранятся параметры сценария. И правильно не хотим — 
интерпретатор перед запуском сценария делает все сам. Причем независимо от того,
 
каким методом — GET или POST — воспользовался "браузер". То есть, PHP сам оп- 
ределяет, какой метод был задействован (благо, информация об этом доступна 
через 
переменную окружения REQUEST_METHOD), и получает данные либо из 
QUERY_STRING, либо из стандартного входного потока. Это крайне удобно и достой- 

но подражания, вообще говоря, в любых CGI-сценариях. 
А именно, интерпретатор все данные из полей формы преобразует в глобальные од- 
ноименные переменные. В нашем случае значение поля name после начала работы 
программы будет храниться в переменной $name, а значение поля age — в перемен- 
ной $age. То есть, не надо ничего ниоткуда "получать" — все уже установлено и 
рас- 
паковано из URL-кодировки. Максимум удобств, минимум затрат, не правда ли? К 
тому же, еще и работает быстрее, чем аналогичный кустарный код, написанный на 
PHP, потому что разработчики PHP предусмотрели функцию разбора командной 
строки на Си. 

Глава 8. Работа с данными формы 147 
Вот наш окончательный сценарий hello.php (листинг 8.4). Как видите, он сжался 
до неприличных размеров: 
Листинг 8.4. hello.php: окончательная версия 
 
 Я знаю, Вам $age лет!" ?> 
 
Давайте теперь его усовершенствуем — сделаем так, чтобы при запуске без 
парамет- 
ров сценарий выдавал документ с формой, а при нажатии кнопки — выводил нужный 
текст. Самый простой способ определить, был ли сценарий запущен без парамет- 
ров — проверить, существует ли переменная с именем, совпадающим с именем кноп- 
ки отправки. Если такая переменная существует, то, очевидно, что пользователь 
за- 
пустил программу, нажав на кнопку. Здесь мы применим инструкцию if, которая 
нами еще не рассматривалась, но, думаю, читатель простит мне этот огрех (лис- 
тинг 8.5). 
Листинг 8.5. hello.php: усовершенствованная версия 
 
 
Введите имя:
Введите возраст:
Привет, !
Я знаю, Вам лет!" Из этого примера мы можем почерпнуть еще один удобный прием, который нами пока не рассматривался. Это конструкция . Она является ничем иным, как просто более коротким обозначением для , и пред- назначена для того, чтобы вставлять величины прямо в HTML-страницу. Помните наши рассуждения о том, что же первично в PHP: текст или програм- ма? Конструкция мы не за- дали явно имя файла сценария, а извлекли его из переменной SCRIPT_NAME (которая устанавливается автоматически перед запуском сценария). Это позволило нам не "привязываться" к имени файла, т. е. теперь мы можем его в любой момент переиме- новать без потери функциональности. Если PHP установлен не как модуль Apache, а как отдельный обработчик, то переменная $SCRIPT_NAME будет содержать не то значение, на которое мы рассчитываем. Например, если воспользоваться способом инсталляции PHP, который предлагается во второй части этой книги (когда мы устанавливаем PHP именно как внешнюю программу, а не модуль Apache), после запуска сце- нария переменная $SCRIPT_NAME будет содержать строку /_php
 
<<-[Весь Текст]
Страница: из 287
 <<-