Чтение онлайн

ЖАНРЫ

Интернет-журнал "Домашняя лаборатория", 2007 №3
Шрифт:

<?php if ($а==1) {?><р>Переменная а равна 1<?php }?>

эквивалентен коду

<?php if ($а==1) {echo "<р> Переменная а равна 1</р>";}?>,

однако первый вариант меньше нагружает процессор компьютера, на котором расположен интерпретатор РНР.

Из сказанного также следует, что все программы на РНР, расположенные на одной web-странице, представляют из себя одну большую программу, — несмотря на то, что они разделяются блоками обычного текста страницы. Именно поэтому переменная, объявленная в расположенном в начале страницы коде, сохраняет свое значение не только до ее конца, но и во всех присоединяемых с помощью команды include файлах. Вот, к примеру, демонстрация этого — рис. 19.1.

Рис. 19.1. Пример

РНР-кода. Посмотрите внимательно на код (окна слева) и итог его выполнения (окно браузера справа). Обратите внимание, что переменная а, которой присвоено значение еще в первом программном блоке левой страницы, сохранила его не только в других ее блоках, но и в программе, расположенной во включаемой с помощью команды include страницы.

Однако помните, что если вы создаете функцию на РНР (попросту вставляя в программу инструкцию Function имя {…команды функции…} с целью потом ее вызывать командой имя), то переменные, объявленные в ней, по умолчанию имеют установленное значение только внутри функции. Кроме того, также по умолчанию переменные, объявленные вне функции, в ней самой никакого значения не имеют. Подробнее о функциях и о переменных в них читайте в руководстве по РНР, например, с того же сайта http://php.spb.ru.

Обычно web-сервер настраивается так, что на предмет наличия программ на РНР просматриваются файлы, имеющие расширение. php, phtml, остальные же файлы передаются в браузер пользователя без поиска в них команд РНР. Делается так для более быстрой работы сервера, а также для обеспечения возможности установки на сервере разных интерпретаторов (например, SSI — Server Side Includes, в технологии, в какой-то мере предшествовавшей РНР), так как тогда каждому из интерпретаторов назначаются свои расширения для обработки соответствующих файлов.

Так как PHP-код полностью исполняется на web-сервере, то в страницах, выдаваемых браузеру, он будет отсутствовать, и если кто заинтересуется вашим опытом программирования, то вам придется отправлять ему этот код по почте, так как при просмотре сайта каким-нибудь образом узнать исходный PHP-код его страниц нельзя.

Работа с формами

Значения переменных можно передавать между различными страницами сайта — с помощью использования форм. Формой называется конструкция, состоящая из поименованных элементов особых типов, заключенных между HTML-тэгами <form..> и </form>. В качестве элементов формы могут выступать поля ввода текста, кнопки, выпадающие меню, переключатели, квадратики для отметки галочкой checkbox'ы, а также картинки формата jpg или gif.

Наиболее важным свойством формы является то, что в ее заголовке — в открывающем тэге <form..> можно указать адрес какого-либо файла, и тогда при его загрузке в программный код этого файла, если он будет там присутствовать, передадутся значения всех переменных, установленных в этой форме — в частности, значения всех элементов формы, как если бы эти значения были установлены в программе, расположенной в самом загружаемом файле. Таким образом можно передавать значения переменных между различными web-страницами, используя их в программном коде. Имена переменных соответствуют тем именам, которые были даны элементам формы в их тэгах, а значения — соответственно значениям этих элементов: для поля ввода текста — введенному тексту, для переключателя или checkbox'а — True при отмеченном и False при неотмеченном, для рисунка — координаты указателя мыши относительно верхнего левого угла изображения, для выпадающего меню (элемент <select name="HMH" Xoption value="textl ">text</option>…</select>) — значение параметра value выбранного пункта option.

Пример создания и применения формы приведен ниже, в разделе "Практическое использование".

Зачем он нужен?

Можно спросить: а зачем же может вообще потребоваться РНР? Разве обычных HTML и пары JavaScript не достаточно для создания красивой web-страницы?

Ну, во-первых, РНР может очень серьезно облегчить работу создателя сайта. С помощью команды include можно автоматически вставлять один и тот же фрагмент HTML-кода во множество страниц, просто поместив в них эту команду с именем файла, содержащего код общей части. Причем этот код тоже может меняться в зависимости от страницы, в которую он включается, — достаточно в этой странице

установить значение какой-либо переменной, а в коде общей части поместить инструкцию if, результат работы которой зависит от этого значения. В результате для обновления такой общей части будет достаточно отредактировать один файл — тот, который ее, собственно, и содержит, — и тогда для посетителей сайта соответственно изменятся все его страницы, как если бы вы все их вручную отредактировали.

Работа web-мастера по поддержке сайта при использовании РНР заметно облегчается. К примеру, немного поработав, можно сделать сценарий, "пробегающий" по всем файлам в каком-либо каталоге и "вытаскивающий" оттуда какие-либо фрагменты (например, содержимое тэгов "meta" — функция get_meta_tags). Таким образом можно, скажем, автоматически создавать оглавления журналов или библиотек: стоит поместить в каталог новую статью (оформленную согласно определенным правилам), как она тут же станет появляться в оглавлении на главной странице без необходимости эту главную страницу обновлять вручную.

С помощью РНР можно серьезно облегчить частое обновление страницы — так, если страница содержит часто меняющуюся вставку (например, новости), то будет неплохо поместить на место этих новостей инструкцию include ("file"), а в этом файле разместить текст новостей. В результате при обновлении новостей редактированию придется подвергать лишь сам их текст, а не HTML-код заглавной страницы, что и самому делать легче, и неопытному помощнику доверить можно.

Помощь web-мастеру и службе поддержки web-pecypca — это лишь весьма малая часть функций РНР. Используя РНР, можно обогатить сайт огромным количеством новых возможностей, делающих его удобным и нужным для посетителя. Так, с помощью функции mail легко обеспечить отправку почтового сообщения по какому-либо адресу со страниц сайта, — например, мнения посетителя о сайте или вопроса его владельцу. Сделать гостевую книгу, чат или форум на РНР тоже возможно, в Сети нетрудно найти немало уже готовых подобных сценариев. В следующем разделе будет рассказано, как с помощью РНР улучшить удобство работы с сайтом, содержащим множество однотипных небольших разделов, или создать мини-Интернет — магазин.

Одним из наиболее заметных достоинств РНР является возможность легкой работы с серверами баз данных. Ранее, до появления этого языка, задание, выражающееся словами "приделать базу данных к web-странице", было довольно трудным и малодоступным для начинающих web-дизайнеров. Приходилось либо самостоятельно разрабатывать хитроумные скрипты, взаимодействующие как с программой управления базой данных, так и с web-страницами сайта, либо закупать их у фирм-разработчиков. С помощью же РНР использование базы данных на сайте стало чуть ли не элементарным. Для работы с подавляющим большинством типов баз данных в РНР есть встроенные функции, поэтому теперь для достаточно лишь установить на web-сервере программу работы с базой данных (наиболее часто используется бесплатная MySQL — и включить в текст РНР-сценария команды работы с нею (их список приведен в описании языка вместе с примерами использования).

Возможности РНР можно весьма серьезно расширить с помощью дополнительных модулей, содержащих различные функции. Эти модули при необходимости размещаются на web-сервере, на котором установлен РНР-интерпретатор. Их можно загрузить с адресатам же в разделе документации приведено и полное их описание. (В том web-сервере с установленным РНР, который распространяется с сайтаникаких дополнительных модулей нет для уменьшения размера дистрибутива.) Например, модуль Zlib позволяет работать из программы на РНР с архивами в формате Gzip, а модуль libswf — с Flash-презентациями, создавая их и редактируя прямо из программы на сервере. Так как РНР — развивающийся язык, то новые модули появляются довольно часто, однако использовать их можно лишь после установки на web-сервер, что провайдеры хостинговых услуг могут не сделать. Поэтому при желании использовать функции из какого-либо модуля нужно сначала проверить, поддерживает ли их web-сервер, на котором вы собираетесь размещать сайт.

Сделать это можно, либо разместив на сервере страницу со строчкой <?php phpinfo?> и загрузив ее с сервера в браузер (на ней будет отображена информация о версии РНР, параметрах web-сервера и многом другом, в том числе дополнительных модулях), либо попросту задав вопрос группе технической поддержки сервера.

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

Поделиться с друзьями: