Рис. 19.4. Если вас заинтересовали лишь отдельные вопросы, нет надобности загружать всю страницу.
Данную схему, разумеется, можно доработать. Опыт показывает, что посетители чаще всего предпочитают просмотреть либо два-три выбранных раздела, либо все разделы сразу. В последнем случае им придется отмечать все checkbox'ы страницы, что занимает время и силы. Поэтому стоит поместить на страницу еще и кнопку вывода сразу всех разделов — "Просмотреть все". Ей можно назначить гиперссылку с адресной строкой, содержащей все переменные в значении on, а можно немного доработать код РНР на странице-обработчике запроса, попросту добавив во все условия проверку значения еще одной, общей для всех условий переменной: if (($bar02==True) || ($all==True)) {… (напоминаю, что знак ||
означает "или"), и тогда гиперссылка может вести всего лишь на адрес albm.php?all=True. Можно для решения той же задачи поместить на страницу пару сценариев на JavaScript, выполняющих соответственно отметку всех checkbox'ов и, наоборот, их очистку (см. такой, к примеру, на странице www.harchikov.ru/cass.php). Так что простор для творчества имеется, и немалый.
Интернет-магазин
2. С помощью РНР можно легко сделать мини-Интернет-магазин — т. е. установить на сайт форму заказа, которая будет отправляться вам по электронной почте. При этом почтовая программа посетителя использоваться не будет — ему даже необязательно вообще ее иметь.
К примеру, такой "виртуальный магазин" аудиокассет сделан на странице http://www.harchikov.ru/cass.php (рис. 19.5). Посетитель может просмотреть описания кассет и отметить заинтересовавшие его предложения, поставив галочку в checkbox'ах. В низу страницы расположен раздел оформления заказа — сверившись с суммой (рассчитываемой небольшим сценарием на javascript и выводимой средствами Dynamic HTML в соответствующей строке формы), посетитель должен ввести свои контактные данные и отправить заказ, нажав соответствующую кнопку.
Рис. 19.5. Интернет-магазин — выбирай и заказывай. А строили его всего 5 минут.
Страница "магазина" содержит форму с заголовком <FORM METHOD="post" ACTION="http://www.harchikov.ru/zakaz.php" NAME="mainform"> — то есть PHP-программа, обрабатывающая форму, находится в файле zakaz.php на сайте www.harchikov.ru (и именно на эту страницу произойдет переход после нажатия кнопки отправления заказа на исходной странице — "Отправить заказ"), а в адресной строке переменные отображаться не будут. Поскольку программы на РНР, чтобы быть исполненными, должны содержаться в какой-либо web-странице, то команда отправки почты содержится в файле zakaz.php. Вот как выглядит РНР-сценарий, формирующий письмо с заказом и отправляющий его администратору сайта:
<?php
$zak=" \n";
if ($RNS == True){$zak="$zak Русские не сдаются! \n"; }
if ($ZAR == True){$zak="$zak За Родину \n"; }
if ($PRP == True){$zak="$zak Песни пролетариата \n"; }
...
mail ("[email protected]", "Заказ на кассеты", "С адреса $email с контактными данными $cont пришла заявка на приобретение кассет: $zak. Отправитель пользовался браузером $HTTP_USER_AGENT, работал с IP-адреса $REMOTE_ADDR", "From: $email\nReply-To: $email\nContent-Type: text/plain; charset=windows-1251");
?>
Команда, собственно отправляющая письмо, стоит последней — это mail (описание читайте выше). Так как весьма желательно, чтобы получатель письма мог сразу начать выполнять заказ, не тратя время на расшифровку письма, то с помощью небольшого фрагмента кода на основе данных о значениях переданных переменных создается строка с построчным перечнем полных названий заказываемых товаров (чтобы не было проблем с восприятием интерпретатором кириллических символов в качестве имен переменных, имя каждого checkbox’а содержит только латинские буквы, например, PVS — <INPUT NAME=FVS TYPE=checkbox>) — и уже эта строка помещается в письмо. В результате тот, кто обрабатывает заказы, получит аккуратный список заказанных товаров и сведения о заказчике.
Имейте в виду, что для полноценного тестирования функции mail на локальном компьютере на нем должна быть установлена программа — почтовый сервер с соответствующими указаниями в настройках web-сервера, — иначе интерпретатор РНР будет выдавать сообщения об ошибке. Поэтому тестировать описанный здесь сценарий лучше сразу на сервере в Интернете.
Вот так, очень просто, вы можете сделать элементарную форму заказа чего-либо через Интернет с отправкой данных этих заказов вам по электронной почте. При использовании данного способа посетителю даже не нужно быть постоянно подключенным к Интернету во время оформления заказа — он спокойно может загрузить страницу с перечнем товаров, отключиться от Сети, выбрать нужные предложения и заполнить поля формы заказа, а затем, подключившись снова, этот заказ отправить. Да и саму страницу со списком ему необязательно получать именно из Сети — вы можете отправить ее кому-либо по почте или поместить на компакт-диски, раздаваемые друзьям или коллегам (не забудьте только в заголовке формы указать полный адрес страницы с программой-обработчиком, как это сделано в приведенном примере).
Упомянутый сценарий Интернет-магазина подробно рассмотрен в книге "РНР: полезные приемы".
Заключение
История РНР — прекрасный пример того, как изобретение, действительно нужное людям, способно завоевать весь мир. Начавшись с небольшого приложения, созданного энтузиастом-любителем, РНР превратился в самый массовый и самый многофункциональный язык web-программирования. Простой синтаксис и логичная структура, отсутствие затрудняющих работу особенностей, модульность конструкции интерпретатора, легкость взаимодействия с базами данных, — все это и сделало РНР таковым.
Освоить РНР может каждый. Наличие множества весьма информативных ресурсов Интернета и полнота официального описания языка делают этот процесс легким и быстрым. Для реализации довольно широкого круга задач вполне хватит даже простой модификации фрагментов кода, приводимых в справке к официальному описанию. А, как показано выше, РНР позволяет не только дать посетителям сайта новые возможности, но и серьезно облегчить труд создателя сайта, тем самым сэкономив больше времени, чем затрачено на его освоение. Поэтому вы никогда не пожалеете, что занялись изучением этого языка.
* * *
Полезные советы
• Наиболее частой ошибкой при создании программ на РНР является отсутствие знака точки с запятой после какого-либо оператора. За его наличием надо внимательно следить. Также не следует забывать, что при выполнении в каком-либо условии сравнения на равенство двух переменных между ними необходимо ставить не один, а два знака равенства: if (a==b) и никак иначе.
Глава 20
Правильный проект — залог успеха
Перед тем, как начинать создание сайта, стоит сесть и продумать общий план будущего Интернет-представительства: что там будет находиться, как его содержимое[52] станет соотноситься друг с другом, какие дополнительные возможности предоставит сайт посетителю, каким будет стиль оформления web-страниц. Для каждого сайта план проектировки будет свой, однако есть некоторые законы, которые стоит изложить.