Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
На автозапчасти, отправленного с клиентской машины
Мы знаем и понимаем, что пассивный (статический) сайт, написанный на языке HTML, можно отлаживать на локальном (клиентском) компьютере с помощью браузера. Далее отлаженный в таком режиме сайт можно публиковать (перенести) на сервер выбранного нами провайдера. И даже активный (динамический) сайт, содержащий скрипты на языке JavaScript, можно отлаживать на локальном компьютере с помощью браузера. Потому что интерпретатор скриптов JavaScript содержится в составе самого браузера. Иначе обстоит дело при серверном Web-программировании, т.е. создании программ, выполняющихся на сервере. Как было сказано ранее, такие программы чаще всего пишут на языке PHP. Для демонстрации принципов серверного Web-программирования мы создадим сайт, иллюстрирующий работу магазина автозапчастей [8]. Как увидим далее при описании функциональности, сайт наш будет интерактивный (пользователь будет вводить данные, серверная программа на языке PHP эти данные будет обрабатывать и выдавать результат). Следовательно, такой сайт нельзя будет отлаживать на локальном компьютере только с помощью браузера, как отлаживаются статические сайты. Нельзя хотя бы потому, что в составе браузера нет интерпретатора языка PHP (есть и другие причины). Такой сайт уже на этапе создания и отладки надо поместить на Web-сервер. Мы так и сделаем. Но мы поместим свой сайт не на «настоящем» удаленном Web-сервере, принадлежащем провайдеру, а воспользуемся локальным или, по-другому, виртуальным Web-сервером, имитирующим удаленный сервер. Материал об установке такого Web-сервера дан в разделе 2.3. На нашем локальном сервере сайт будет представлен двумя файлами: C: \WebServers\home\autoparts\www\Index.htm, Obrabotka.php. Обратившись по адресу http: //autoparts к сайту магазина, мы будем получать форму для ввода заказа (рис. 2.1). Обратите внимание на то, что мы указываем только часть адреса сайта, остальная часть формируется сервером. Запчасти от Занифа
Рис. 2.1. Форма для ввода заказа Форма должна будет храниться на сервере в папке сайта в файле под именем index.htm. В форме для ввода количества заказываемых товаров используются текстовые поля. Для отправки заполненной формы на сервер служит кнопка Отправить заказ. Для обработки заказа и вывода на экран клиента результатов обработки на сервере в папке сайта должна быть программа обработки заказа, написанная на языке PHP. Назовем ее obrabotka.php. Код формы (в файле index.htm) будет следующий.
Листинг 2.1 < html> < body> < h1> Запчасти от Занифа< /h1> < h2> Форма заказа< /h2> < form action=" obrabotka.php" method=" post" > < table border=2> < tr bgcolor=#cccccc> < td width=150> Товар< /td> < td width=100> Количество< /td> < /tr>
< tr> < td> Шины< /td> < td align=" center" > < input type=" text" name=" tireqty" size=3 maxlength=3> < /td> < /tr> < tr> < td> Масло< /td> < td align=" center" > < input type=" text" name=" oilqty" size=3 maxlength=3> < /td> < /tr> < tr> < td> Свечи зажигания< /td> < td align=center> < input type=" text" name=" sparkqty" size=3 maxlength=3> < /td> < /tr> < tr> < td colspan=2 align=center> < input type=" submit" value=" Отправить заказ" > < /td> < /tr> < /table> < /form> < /body> < /html>
Комментарии к коду формы Для ввода количества заказываемых товаров используются текстовые поля. Для обеспечения хорошего дизайна они помещены в ячейки таблицы. Таблица несколько усложняет восприятие HTML-кода, но улучшает интерфейс. Для отправки заполненной формы на сервер служит кнопка Submit. В теге: < form action=" obrabotka.php" method=" post" > указаны: · метод передачи данных на сервер — method=" post" · имя серверной PHP-программы для обработки заказа — obrabotka.php
Заполнив заказ, отправляем его на сервер, нажав кнопку Submit. Необходимо, конечно, понимать метод передачи данных с формы на сервер — post. Этим мы займемся позже. Пока примем на веру то, что имена текстовых полей для ввода количества заказываемых изделий в коде формы (tireqty, oilqty, sparkqty) должны использоваться и в программе obrabotka.php, обрабатывающей заказ и формирующей Web-страницу для отправки клиенту. Как только программа obrabotka.php получит значения полей tireqty, oilqty, sparkqty, она начнет работать и, для наших введенных в форму данных, результат обработки вернет на клиентскую машину в виде следующей Web-страницы. Рис. 2.2. Web -страница с результатом обработки заказа В случае пустых полей ввода должно быть выдано сообщение: Вы ничего не заказали на предыдущей странице! Цвет текста должен быть красный. Серверная PHP-программа для такой обработки заказа — obrabotka.php будет иметь следующий код. Листинг 2.2 < html> < head> < title> автозапчасти от Занифа< /title> < /head> < body> < h1 align=" center" > Автозапчасти от Занифа< /h1> < h2 align=" center" > Результаты заказа< /h2> <? echo " Заказ обработан в "; echo date (" H: i.d.m.Y" )." < br> "; $totalqty=$tireqty+$oilqty+$sparkqty; if ($totalqty==0) { echo " < font color=red> "; echo " Вы ничего не заказали на предыдущей странице"; echo " < /font> "; exit(); } echo " Ваш заказ следующий: < br> "; echo $tireqty." шины < br> "; echo $oilqty." масло < br> "; echo $sparkqty." свечи < br> "; echo " < br> Заказано всего: ".$totalqty." < br> "; define (" TIREPRICE", 1000); define (" OILPRICE", 300); define (" SPARKPRICE", 100); $totalamount=TIREPRICE*$tireqty+OILPRICE*$oilqty+ SPARKPRICE*$sparkqty; $totalamountf=number_format($totalamount, 2); echo " < br> Стоимость заказа без налога: ".$totalamountf; $taxrate=0.1; $totalamount=$totalamount*(1+$taxrate); $totalamountf=number_format($totalamount, 2); echo " < br> Стоимость заказа с налогом: ".$totalamountf; ? > < /body> 2.2. Особенности синтаксиса языка PHP Систематическое и достаточно полное для решения наших задач изложение материала по языку PHP дано в разделе 4 этого пособия. Для получения детальной и исчерпывающей информации, естественно, надо обращаться к специальной литературе, перечень которой приведен в списке литературы. Чтобы понять эту программу контингенту, для которого предназначено данное пособие, достаточно ознакомиться с особенностями синтаксиса языка PHP и несколькими операторами. Они представлены в следующей таблице. Таблица 2.1
Обратите внимание на то, что имена текстовых полей для ввода количества заказываемых изделий в коде формы (tireqty, oilqty, sparkqty) с очень небольшим изменением используются и в программе obrabotka.php, обрабатывающей заказ и формирующей Web-страницу для отправки клиенту. Изменение имен полей сводится к добавлению в начало идентификатора символа $. Возникает вопрос: как программа обработки получает значения этих переменных, введенных в форму пользователем. Ответ на этот вопрос дается в следующем подразделе.
2.3. Методы передачи информации в серверную PHP-программу В серверном Web-программировании достаточно распространенной задачей является передача данных (параметров) PHP-программе извне (из другой программы, из адресной строки браузера). В подразделе 2.1 потребовалась передача данных, введенных в форму, и имен этих данных обрабатывающей PHP-программе. Там для этого был использован метод POST.
2.3.1. Метод POST Работает следующим образом. Данные, необходимые обрабатывающей программе, вводятся пользователем в соответствующие поля HTML-формы (рис. 2.1). В нашей задаче это поля типа Text. При нажатии кнопки типа Submit (у нас это кнопка Отправить заказ ) имена полей ввода и введенные в них значения отправляются на сервер блоком данных и там могут быть использованы указанной в теге < FORM> программой (у нас это программа из файла obrabotka.php). Чтобы обеспечить такую совместимость, в обрабатывающей программе для обозначения получаемых с формы данных надо использовать имена, получаемые путем добавления к именам полей формы символа $ (в нашем примере — $tireqty, $oilqty, $sparkqty). На некоторых серверах в обрабатывающей программе эти имена и значения переменных можно использовать без всяких подготовительных операций (как в нашей программе): echo $tireqty. " шины < br> "; echo $oilqty. " бутылки масла < br> "; echo $sparkqty. " свечи зажигания < br> "; Но эта возможность определяется состоянием директивы register_globals в разделе Data Handling конфигурационного файла php.ini (он находится по адресу c: \webservers\usr\local\php5\php.ini). Если она выключена (по умолчанию это так), т.е. register_globals= Off, такое прямое использование будет запрещено. Тогда приходится пользоваться так называемым суперглобальным массивом $_POST. Этот ассоциативный массив формируется на сервере из данных, поступающих с формы. В нашем случае он будет иметь вид: $_POST= array (“tireqty” => 2, “oilqty” => 1, “sparkqty” => 4) Здесь показан один из способов формирования ассоциативного массива в PHP.
Имея некоторые знания по работе с обычными одномерными массивами, можно догадаться, что ассоциативный массив отличается от обычного тем, что в нем вместо числовых индексов используются словесные, «смысловые» индексы. Значения элементов массива взяты из нашего примера, из заполненной формы. Для такого сервера нашу обрабатывающую программу пришлось бы изменить. А именно, значения требуемых переменных пришлось бы брать из суперглобального массива таким образом: $tireqty =$_POST [“tireqty”]; $oilqty =$_POST [“toilqty”]; $sparkqty =$_POST [“sparkqty”];
2.3.2. Метод GET При отправке данных с формы на сервер по методу GET содержимое формы добавляется в адресной строке браузера к URL программы, принимающей эти данные, в следующем виде: http: //action.php? name1=value1& name2=value2& name3=value3. Здесь action. php — это URL-адрес программы, которая долж- на обрабатывать форму. Обычно это программа, заданная в атрибуте action тега form. Имена name1, name2, name3 соответствуют именам элементов формы, а value1, value2, value3 — значениям этих элементов. В нашем примере после ввода данных в форму и нажатия клавиши Отправить заказ в адресную строку браузера занесется следующее значение: http: //autoparts/obrabotka.php? tireqty=2& oilqty=1& sparqqty=4. Таким образом, передача данных серверной программе по ме- тоду GET происходит совсем не так, как при методе POST. А именно, передаваемые данные «проходят» через адресную строку браузера, и они видны пользователю (рис. 2.3). В принципе, для передачи данных методом GET вводить данные в поля HTML-формы не обязательно. Можно просто добавить в строку URL нужные переменные и их значения. Это будет выглядеть, как представлено на рис. 2.4. И данные будут переданы в серверную программу, хотя в поля формы данные не введены.
Рис. 2.3. Передача данных с формой по методу GET Рис. 2.4. Передача данных с формой без заполнения формы Итак, из рассмотренного примера понятно, что для полей ввода текста (это элементы input с атрибутом type=text) передаваемым значением будет то, что введет пользователь. Это же справедливо и для поля ввода пароля (тег input с атрибутом type=password). Если пользователь ничего не вводит в такое поле, то в строке адреса будет присутствовать элемент name= (без значения), где name соответствует имени этого элемента формы. Доступ к переданным данным в серверной программе происходит по той же схеме, что и в методе POST. Если директива register_globals в конфигурационном файле php.ini включена, переданные из формы значения можно использовать напрямую. В противном случае данные придется извлекать из суперглобального массива $_GET: $tireqty =$_GET [“tireqty”]; $oilqty =$_GET [“oilqty”]; $sparkqty =$_GET [“sparkqty”]; После рассмотрения обоих методов передачи данных в серверную программу возникает вопрос: «А нельзя ли обходиться только методом POST? » В основном так и делается. Но использовать метод GET удобно при отладке скриптов (тогда можно видеть имена и значения передаваемых данных) [7].
2.4. Варианты передачи данных серверной программе с разных элементов формы На практике для передачи данных серверной программе с помощью формы используются не только рассмотренные выше поля типов text и password. Бывает потребность брать данные с полей типов: Radio, CheckBox, Select, Textarea. Работу с полями этих типов рассмотрим на примере обработки анкетных данных (рис. 2.5).
Рис. 2.5. Форма для заполнения анкеты Такая Web-страница создается следующим HTML-кодом.
Листинг 2.3 < h3 align=" center" > Анкета < /h3> < form action=" obrabotka.php" method=" post" > Введите фамилию и инициалы: < input type=" text" name=" fio" size=30> < br> E-mail: < input type=" text" name=" email" size=30> < p> Укажите, к какой группе пользователей вы себя относите: < br> < input type=" radio" name=" group" value=" предприниматель" > предприниматель< br> < input type=" radio" name=" group" value=" студент" > студент< br> < input type=" radio" name=" group" value=" преподаватель" > преподаватель< p> Какие из сервисов Интернета вы используете наиболее часто: < br> < input type=" checkbox" name=" service[]" value=" www" > WWW < br> < input type=" checkbox" name=" service[]" value=" e-mail" > e-mail < br> < input type=" checkbox" name=" service[]" value=" ftp" > FTP< p> Каким браузером вы пользуетесь: < br> < select name=" browser[]" multiple> < option value=" Internet Explorer" selected> Internet Explorer < option value=" Netscape Navigator" > Netscape Navigator < option value=" Opera" > Opera < option value=" Mozilla Firefox" > Mozilla Firefox < /select> < p> Какую еще информацию вы хотели бы видеть на нашем сайте? < br> < textarea name=" pojelanie" rows=4 cols=30> < /textarea> < p> < input type=" submit" value=" Отправить" > < input type=" reset" value=" Очистить" >
Чтобы понять работу скрипта, обрабатывающего анкету, следует уяснить следующее. Имена радиокнопок одинаковые (group), но кнопки отличаются значениями атрибута value. Имена независимых переключателей (флажков) тоже одинаковые (service). Они тоже отличаются значениями атрибута value. Но в отличие от радиокнопок, в этом случае может быть выбрано любое количество флажков (от 0 до 3 в нашем примере). Поэтому значение атрибута name наших флажков задается в виде массива: name=" service[]". А PHP-скрипт можно разработать такой, чтобы, обработав массив, можно было разобраться, что выбрал пользователь. Заметим также, что в материалах по языку HTML возможность задания имени группы флажков в виде массива обычно не упоминается. Для раскрывающегося списка тоже имеется возможность выбора нескольких опций из списка. Для этого в нашем примере в теге select значение атрибута name задается в виде массива: < select name=" browsers[]" >. Надо заметить, что в обоих случаях, если значение атрибута name не задавать в виде массива, выбирать можно будет только одну кнопку (checkbox) и одну опцию (select). Обрабатывать эти поля надо не как массив, а как обычную переменную. После обработки нашей анкеты пользователь должен получить результат в виде следующей Web-страницы. Рис. 2.6. Результат обработки анкеты Такую обработку анкеты может выполнить следующий скрипт. < body> <? $fio=$_POST[" 'fio']; $email=$_POST[" email" ]; //if (isset($_POST['group'])) $selected_radio = $_POST['group']; echo " Уважаемый $fio! < br> "; echo " Вы ". $selected_radio." < br> "; echo " Из сервисов Интернета Вы используете наиболее часто: < br> "; foreach ($_POST[" service" ] as $index=> $value) {echo " $value< br> "; } echo " Вы пользуетесь браузером: < br> "; foreach ($_POST[" browser" ] as $index=> $value) {echo " $value< br> "; } $pojelanie = $_POST[" pojelanie" ]; echo " Ваше пожелание следующее: < br> "; echo $pojelanie; ? > < /body> < /html>
Разбор скрипта начнем с 6-й строки: $selected_radio = $_POST['group']. Так как выбранной может быть только одна радиокнопка, при обработке группы из трех радиокнопок в суперглобальный массив попадает значение атрибута value той радиокнопки, которая была выбрана пользователем. В нашем примере это радиокнопка со значением “студент”. Переменной $selected_radio присваивается именно это значение. Строки 9—12 обрабатывают группу из трех флажков, соответствующих трем сервисам Интернета. echo " Из сервисов Интернета Вы используете наиболее часто: < br> "; foreach ($_POST[" service" ] as $index=> $value) {echo " $value< br> "; } В отличие от радиокнопок, в этом случае может быть выбрано любое количество флажков, и их значения помещаются в суперглобальный массив $_POST[" service" ]. Для выборки значений из этого массива используется функция foreach. Она по очереди просматривает элементы массива, а оператор echo выводит значения элементов на экран. Строки 13—16 обрабатывают раскрывающееся меню, содержащее 4 значения. echo " Вы пользуетесь браузером: < br> "; foreach ($_POST[" browser" ] as $index=> $value) {echo " $value< br> "; } Хотя в нашей анкете элемент формы select позволяет одновременно выбрать только одну опцию из списка, есть возможность превратить его в элемент с множественным выбором. Для этого в тег select надо было бы добавить атрибут multiple таким образом: < select name=" browser[]" multiple>. В таком случае может быть выбрано любое количество флажков, и их значения помещаются в суперглобальный массив $_POST[" service" ]. Для выборки значений из этого массива, как и в предыдущем фрагменте, используется функция foreach. Она по очереди просматривает элементы массива, а оператор echo выводит значения элементов на экран. Строки 17—19 обрабатывают многострочное текстовое поле с именем pojelanie. $pojelanie = $_POST[" pojelanie" ]; echo " Ваше пожелание следующее: < br> "; echo $pojelanie; Как видим, многострочное текстовое поле (textarea) обрабатывается точно так же, как и простое текстовое поле (text). Теперь, после рассмотрения вариантов передачи данных со всех типов элементов ввода в форму, можно вернуться к рассмотрению структуры суперглобального массива $_POST. Для нашей анкеты после его заполнения этот массив будет содержать следующие элементы с их индексами: · $_POST[" fio" ] = Скриптов С.С; · $_POST[" email" ] =scr12@ mail.ru; · $_POST[" group" ] = студент; · $_POST[" service" [0]] = WWW; · $_POST[" service" [1]] = email; · $_POST[" browser" [0]] = Mozilla Firefox; · $_POST[" pojelanie" ] = Материалы по Web-программированию. Еще раз обратим внимание на то, что два элемента суперглобального массива, а именно $_POST[" service" []] и $_POST[" browsers" [0]] сами являются массивами. Причем размерность их зависит от того, сколько значений выбрал пользователь.
2.5. Проверка данных, введенных в форму При передаче данных из формы в серверную программу необходимо бывает организовать контроль: · полноты введенных данных (все ли поля заполнены); · корректности введенных данных (например, по типу — буквы или числа); · корректности введенных данных (например, вхождение значений данных в заданный диапазон). С этой целью рассмотрим еще один пример. Составим серверное Web-приложение, выполняющее следующие функции. 1. Вывод формы с запросом на ввод сторон треугольника. 2. После завершения ввода и нажатия кнопки типа Submit проверка на полноту ввода. 3. Проверка того, что в поля ввода введены только числа. 4. Проверка на корректность введенных значений сторон треугольника (должны соблюдаться известные из геометрии соотношения между длинами сторон треугольника). 5. Обеспечение в любом из предыдущих трех случаев неправильного ввода повторного ввода данных в форму. 6. Вычисление площади треугольника по формуле Герона.
Форма для решения задачи может иметь следующий вид (рис. 2.7). Рис. 2.7. Форма для ввода исходных данных для решения задачи Для ее реализации потребуется такой HTML-код: Листинг 2.4
< html> < title> Вычисление площади треугольника< /title> < body> < form action=" obrabotka.php" method=" POST" > Введите стороны треугольника: < br> a = < input type=" text" name=" a" > < br> b = < input type=" text" name=" b" > < br> c = < input type=" text" name=" c" > < p> < input type=" submit" value=" Вычислить" > < /form> < /body> < /html>
PHP-скрипт для решения нашей задачи будет такой:
Листинг 2.5
< html> < title> Вычисление площади треугольника< /title> < body> <? php $a=$_POST[" a" ]; $b=$_POST[" b" ]; $c=$_POST[" c" ]; if(! is_numeric($a)||! is_numeric($b)||! is_numeric($c)) {echo " Ошибка! Введены не числа или заполнены не все поля. "; echo" < a href='index.htm'> На повторный ввод< /a> "; exit(); } if($a+$b< =$c||$a+$c< =$b||$b+$b< =$a) {echo " Ошибка! Эти значения не могут быть сторонами треугольника. "; echo" < a href='index.htm'> На повторный ввод< /a> "; exit(); }
$pp=($a+$b+$c)/2; $s_tr=sqrt($pp*($pp-$a)*($pp-$b)*($pp-$c)); echo " Площадь треугольника = ".$s_tr; ? > < /body> < /html>
Разбор скрипта следует начать с 6-й строки. Она содержит условие проверки ввода числовых значений во все поля формы. Функция is_numeric($a) возвращает значение true только в том случае, если переменная $a содержит данные, и эти данные являются числом. В остальных случаях (поле не заполнено или в него введены не цифры) результатом выполнения этой функции будет значение false. Если условие в строке 6 будет выполнено, значит пользователь ввел неверные данные или что-то не ввел. Об этом ему сообщит строка 7: «Ошибка! Введены не числа или заполнены не все поля». Строка 8 выведет гиперссылку На повторный ввод. Щелчок по этой ссылке снова вызовет на экран форму для ввода исходных данных. Вызов функции exit() в строках 9 и 13 нужен для завершения выполнения скрипта после вывода формы для повторного ввода данных. Строка 10 содержит условие проверки корректности введенных длин сторон треугольника. При некорректности введенных значений строка 11 выводит сообщение: «Ошибка! Эти значения не могут быть сторонами треугольника». Строка 12 выведет гиперссылку На повторный ввод. Щелчок по этой ссылке снова вызовет на экран форму для ввода исходных данных. Строки 14—16 выполняются, когда во все поля формы будут введены правильные значения. Здесь вычисляется площадь треугольника по форме Герона и выводится результат.
2.6. Разработка и отладка локального сайта с помощью локального сервера Написать код формы и код PHP-скрипта можно на локальном компьютере в редакторе Блокнот. Если бы сайт был статический, его можно было бы отладить на локальном компьютере с помощью браузера. Но в случае интерактивного сайта его сначала надо установить (опубликовать) на сервере какого-нибудь провайдера (получить хостинг, бесплатный или платный). Получить хостинг в наше время тоже не проблема. Проблемой становится отладка сайта. Как мы уже знаем по собственному опыту, чтобы сайт заработал, придется устранить немало ошибок. В случае дистанционного (настоящего) хостинга это означает, что после устранения каждой ошибки надо будет исправленный файл закачивать на удаленный сервер, а это — деньги, время, лишняя работа. Выходом из этой ситуации является установка виртуального сервера на своей локальной машине. Установив такой сервер, интерактивный сайт можно создать и отладить на своей машине. Далее отлаженный сайт можно выставить в Интернет.
2.6.1. Система Денвер Есть прекрасные варианты решения этой проблемы. Наиболее известное решение — это использование «джентльменского набора» сайтостроителя — бесплатного пакета Денвер. Денвер локальный сервер. Скачать Денвер, установить WAMP сервер для localhost (PHP 5.3.13, MySQL 5.1, PostgreSQL 8.4 etc.) Джентльменский набор Web-разработчика («Д.н.w.р», читается «Денвер») — проект Дмитрия Котерова, локальный сервер (Apache, PHP, MySQL, Perl и т.д.) и программная оболочка, используемые Web-разработчиками для разработки сайтов на «домашней» (локальной) Windows-машине без необходимости выхода в Интернет. Главная особенность Денвера — удобство при удаленной работе сразу над несколькими независимыми проектами и возможность размещения на Flash-накопителе. · графический интерфейс СУБД MySQL — программа phpMyAdmin 3.2.3.
Этот пакет отработан очень хорошо. Установка происходит легко, быстро и без ошибок. 2.6.2. Установка Web-сервера на локальном компьютере 1. Запускаем инсталлятор. 2. В процессе инсталляции Денвера нам придется ответить на задаваемые вопросы следующим образом: · Название папки для установки: например WebServer; · В качестве буквы будущего виртуального диска примем предложенную букву Z; · Выберем предложенный режим 1; · Принимаем предложение Создать ярлыки на рабочем столе (Start servers, ReStart servers, Stop servers). Более подробное описание установки можно посмотреть в интернете, например на ресурсе http: //codeacademy.ru/blog/66/nastroika-instrumentariya-dlya-raboty-s-php-denver.
2.6.3. Структура папок локального Web-сервера При установке Denver в папку Webservers создаются следующие папки (рис. 2.8—2.14). Рис. 2.8. Содержание папки WebServers Рис. 2.9. Содержание папки WebServers3\denver
Рис. 2.10. Содержание папки WebServers \ tmp Рис. 2.11. Содержание папки WebServers \ usr В папке usr\local при дальнейшем погружении можно увидеть: · Сервер Apache · СУБД MySQL · Интерпретатор PHP
Довольно подробное описание системы Денвер дано в файле Readme.txt в папке websrevers. HTML-документы должны находиться в директориях /home/localhost /www. Содержимое директории home показано на следующем рисунке.
Рис. 2.12. Содержание папки WebServers \ home При инсталляции Денвера сконфигурированы 3 виртуальных хоста: custom, localhost и test1.ru (cgi_glob не сайт, там хранятся cgi-скрипты). В директории третьего хоста (/home/test1.ru/www) расположена тестовая страница, содержащая некоторую информацию о настройках PHP, переменных окружения и т.д., выводимая функцией PHP phpinfo(). Наш домен под именем autoparts тоже будет создан здесь. Для создания нового сайта в каталоге autoparts надо создать папку WWW. В нее помещаются файлы и папки сайта, в частности, обязательный запускной файл index.htm. Именно он выдается браузеру после указания в адресной строке адреса сайта: http: //autoparts. Требуемое содержимое папки autoparts представлено на следующем рисунке. Рис. 2.13. Содержание папки WebServers \ home \ Теперь, если, запустив браузер, в адресной строке набрать адрес http: //autoparts и нажать Enter, откроется наша форма заказа из файла index.htm. Здесь уместно ответить на вопрос, почему, получив адрес сервера, браузер не пытается обратиться к Интернету, а сразу же находит сайт на локальном компьютере. Это обеспечивается благодаря следующему механизму. Получив адрес сайта, браузер сразу же обращается к файлу c: \windows\system32\drivers\etc\hosts. Там, как видим из следующего рисунка, имеется перечень доменов компьютера.
Рис. 2.14. Перечень доменов компьютера Поддерживаются также виртуальные хосты с доменными именами третьего и выше уровней. Примеры того, как Apache ищет директории документов хостов в этом случае, приведены в следующей таблице. Таблица 2.2.
2.6.4. Порядок создания интерактивного сайта 1. Создать папку autoparts по адресу C: \WebServers\home. В этой папке создать папку www. 2. Набрать в редакторе Блокнот код Web-страницы с формой заказа автозапчастей. Сохранить страницу в файле index.htm и поместить ее в папку www. 3. Набрать код PHP-программы для обработки заказа из формы. Сохранить программу в файле obrabotka.php и поместить ее тоже в папку www. 4. Запустить локальный сервер. 5. Набрать в адресной строке браузера адрес: http: //autoparts, нажать Enter. Откроется наша форма заказа из файла index.htm. 6. Заполнить заказ, отправить его. Получить результат от сервера. Изучить результат обработки. 7. В случае ошибок отладить форму и/или PHP-программу.
Контрольные вопросы 1. Можно ли отлаживать PHP-скрипты на клиентской машине? 2. Укажите адрес создаваемого нами на виртуальном сервере сайта. 3. Какие файлы будут на нашем сайте и каково их назначение? 4. Воспроизведите форму для ввода заказа на автозапчасти. 5. Опишите синтаксис оператора вывода в PHP. 6. Как определяются константы в PHP? 7. Опишите синтаксис условного оператора в PHP. 8. Опишите метод POST для передачи информации PHP-программе. 9. Опишите метод GET для передачи информации PHP-программе. 10. Объясните назначение системы Денвер. 11. Объясните назначение файла c: \windows\system32\drivers\ etc\hosts. 12. Воспроизведите порядок создания сайта autoparts.
ЛАБОРАТОРНЫЕ РАБОТЫ Лабораторная работа № 1 |
Последнее изменение этой страницы: 2019-05-06; Просмотров: 192; Нарушение авторского права страницы