Что вам потребуется для освоения примеров этой главы?
Первая попытка
Первая красивая картинка
Обработка переменных окружения
РНР как язык программирования
Взаимодействие с формами ввода
Взаимодействие с СУБД
Прежде чем перейти к обсуждению всех возможностей РНР и особенностей использования тех или иных механизмов, мы попробуем познакомиться с ним в «неформальной обстановке». Те из вас, кто уже знаком с РНР, могут эту главу безболезненно пропустить и переходить к более высоким материям.
РНР представляет собой специализированный язык, ориентированный на создание динамических HTML-страниц. Его поддержка реализуется сервером WWW,
а это означает, что страницы, содержащие код РНР, представляют собой обычные
текстовые файлы, которые можено редактировать с помощью тех же средств, которые вы используете для подготовки HTML-страниц.
примечание
Конечно, вы должны понимать, что собственно PHP-код не относится к тегам HTML и большинство визуальных средств проектирования HTML-страниц не слишком удобны для его
включения. Поэтому не зря при работе в Windows наилучшим редактором для работы
с HTML и РНР считается старый добрый Notepad.
2.1. Что вам потребуется для освоения примеров этой главы?
Конечно же, вам потребуется сервер WWW, на котором установлены1 средства
поддержки РНР. При этом я буду полагать, что в конфигурационном файле сервера включена строка, обеспечивающая интерпретацию файлов с расширением .php
как PHP-программ. Теперь можно преподать первый урок.
внимание
Если сервер поддерживает РНР, то никакие специальные ухищрения для его использования не нужны. Просто поместите файлы с PHP-программой в тот же каталог, где находятся ваши странички HTML. Никакая компиляция или другие преобразования не потребуются! Попросту говоря, вы можете рассматривать файлы РНР как некоторую новую
разновидность HTML-формата с несколько измененным набором тегов.
2.2. Первая попытка
С тех пор как Керниган и Ричи написачи книгу, посвященную Си, пример «Hello,
world!» стал классическим, и ни одна книга, посвященная описанию языков программирования, без него не обходится. Я не рискну нарушить традицию и пойду
по проторенной дороге...
Итак, мы начинаем с создания файла hello.php. Его содержимое приведено ниже:
<html>
<head><title>Bceм привет от РНР!</title></head>
<body>
<p>
<?php
echo "Да здравствует РНР!<р>";
?>
</body>
</html>
Итак, что мы видим? Прежде всего, РНР прячется внутри специальных тегов, которые попросту игнорируются сервером, не поддерживающим РНР. Вся программа РНР заключается между двумя тегами — , которые, по большому
счету, аналогичны фигурным скобкам в Си или паре операторов begin и end
в Паскале. Между этими операторами вы помещаете произвольный набор команд
РНР.
Наша первая программа содержит всего один оператор echo, который обеспечивает передачу в выходной поток данных (то есть в генерируемую сервером HTML-страницу) строки, которая является его аргументом. В нашем случае этой строкой
является
"Да здравствует РНР!<р>"
примечание
Обратите внимание, что вместо конструкции \п, использующейся для перехода на новую
строку в Си или Perl, мы используем <Р> — ведь страница генерируется в HTML-формате и обычный перевод строки будет проигнорирован программой-навигатором.
После того как вы разместили файл hello.php в одном из каталогов, доступных
серверу, и попытались вызвать его из программы-навигатора, вы должны получить результат, показанный на рис. 2.1. Если же ваш север не поддерживает РНР,
при попытке открыть этот файл вы увидите его содержимое, как если бы это был
обычный текстовый файл, или программа-навигатор может попытаться сохранить этот файл на диске. Если же вы переименуете его в hello.html, то на экране
не отобразится вообще ничего, за исключением заголовка страницы: тег ? php будет «съеден» сервером как неизвестный. В случае же, если РНР сконфигурирован правильно, вы получите, как уже говорилось, результат, приведенный на рисунке.
Рис. 2.1. Результат первой успешной попытки
Теперь посмотрим на исходный текст страницы, которая передана с сервера
(он приведен на рис. 2.2). Обратите внимание, что от введенных нами команд
РНР не осталось и следа: сервер сформировал готовую страницу и отправил ее клиенту.
Рис. 2.2. Исходный текст страницы, полученный от сервера
внимание
Важное отличие РНР от CGI заключается в том, что файл с PHP-программой не нуждается
в размещении в специальных каталогах и присвоении особых прав доступа. Еще раз подчеркнем, что это простой HTML-файл с несколькими дополнительными тегами, которые
заставляют сервер выполнять всю работу.
Конечно, пока что наша программа не слишком впечатляет: вывести текстовую
строку можно и без таких усилий, но это только начало...
Теперь мы несколько модифицируем наш пример и попробуем получить какую-нибудь впечатляющую красивую картинку. Для этого нам достаточно заменить
строку echo на вызов встроенной функции phpinfо ( ):
<html>
<head><title>Параметры РНР-среды</title></head>
<body>
<p>
<?php
phpinfo( ) ;
<?>
</body>
</html>
Как и следует ожидать из названия функции, в результате мы должны получить
небольшую справку о характеристиках используемой нами системы поддержки
РНР. Однако на этот раз результат превосходит ожидания (рис. 2.3).
Как видите, справка достаточно обширна (взгляните на бегунок справа) и содержит большое количество разнообразной информации о среде РНР и о том, как РНР воспринимает сервер Apache и окружающую его операционную систему. Эта программа (вернее функция phpinfo( )) еще не раз сослужит вам добрую службу при диагностировании загадочного поведения ваших программ.
Но хотя эта справка и красива, пользоваться ею в повседневной деятельности не
слишком удобно. Поэтому в следующем примере мы попытаемся извлечь один
отдельный параметр из воспринимаемых РНР.
Рис. 2.3. Встроенная справка о конфигурации РНР
2.4. Обработка переменных окружения
Программа на РНР, как и CGI-сценарий, живет в своеобразной песочнице, на
ограждении которой «развешаны рекламные лозунги» — переменные окружения.
Использование этих переменных может сыграть не последнюю роль в обеспечении переносимости ваших программ. В ходе наших исследований мы воспользуемся только одной из них — переменной $HTTP_USER_AGENT, которая отображает идентификационную строку программы-навигатора, обратившейся к серверу. Вот
как мы поступим на этот раз:
<HTML>
<ТITLЕ>Кто стучится в дверь моя . . . </TITLE>
<BODY>
Кто стучится в дверь моя... <b>
<?php
echo $HTTP_USER_AGENT;
?>
</b>
<p>
Видишь, дома нет никто!
</body>
</html>
Результат выполнения программы приведен на рис. 2.4. В нем нет ничего неожиданного. Но для нас кроме возможности считать отдельную переменную окружения важен еще один принципиальный момент: РНР позволяет произвольное количество раз чередовать участки, представленные в виде РНР-программы, и обычный
(статический) HTML-код.
Рис. 2.4. Чередование кода РНР и HTML
|