Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


PHP -сценарий обработки на сервере заказа



СЕРВЕРНОЕ

ПРОГРАММИРОВАНИЕ

Учебное пособие

 

 


ПРЕДИСЛОВИЕ

Web-программирование является все более широко используемой областью в программировании. Оно берет начало со времени создания «всемирной паутины» — WWW и постоянно развивается и расширяется. Для создания современного сайта требуется использовать все разновидности Web-программирования: HTML- разметку, каскадные таблицы стилей, Web-программирование клиентское и серверное.

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

 

1. ВВЕДЕНИЕ В СЕРВЕРНОЕ WEB-ПРОГРАММИРОВАНИЕ

Web-программирование — это разработка любых программных продуктов, предназначенных для работы на сайтах World Wide Web. Имеются следующие разновидности Web-программирования:

1. Разработка Web -страниц на чистом HTML. Является Web-программированием, потому что при просмотре страницы браузер фактически исполняет код HTML, форматируя текст согласно инструкциям этого языка. На профессиональных сайтах, как правило, для оформления используются каскадные таблицы стилей CSS (cascading style sheets). Поэтому их использование также следует отнести к Web-программированию.

2. Клиентское Web -программирование. Это использование на Web-страницах технологий JavaScript и VBScript для динамического изменения внешнего вида Web-страницы при ее просмотре и выполнение обработки информации, введенной пользователем в формы.

3. Серверное Web -программирование. Это создание CGI-приложений. CGI (сокращение от Common Gateway Interface) — технология, позволяющая запускать на Web-сервере программы, имеющие возможность получать данные от посетителей сайтов, поддерживаемых этим Web-сервером, и в свою очередь выдавать им обработанные данные в виде Web-страниц или других файлов. Прежде чем перейти к детальному описанию особенностей

Web-приложений, вспомним принципы работы Web-сервера.

 

 

1.1. Пассивные и активные серверы Web

Web -сервер — это программа, устанавливаемая на узле сети Интернет и выдающая посетителям этого узла Web-страницы по запросам. Также Web-сервером часто называется узел, на котором эта программа запущена, или даже компьютер, являющийся таким узлом. В Интернете наиболее часто используются серверы Apache (67, 2%) и MS IIS (21, 02%) [8].

Различают пассивные и активные серверы Web. Если страницы сервера содержат только статическую текстовую и мультимедийную информацию, а также гипертекстовые ссылки на другие страницы, то сервер называется пассивным. Такой сервер способен только выдавать Web-страницы по запросам пользователей.

В отличие от пассивных, активные серверы могут:

· вступать в диалог с пользователем, например, запрашивая и принимая от него информацию;

· динамически создавать (не просто извлекать из своей памяти имеющиеся там Web-страницы) Web-страницы для предъявления клиентам;

· при формировании динамических страниц обращаться к базам данных сервера, извлекать оттуда информацию и включать ее в формируемую Web-страницу.

Очевидно, что Web-страницы активного сервера кроме статической текстовой и мультимедийной информации, а также гипертекстовых ссылок должны содержать другие элементы для реализации перечисленных возможностей.

Имеется два варианта реализации активных Web-серверов. Первый из них предполагает применение специальных программных расширений Web-сервера, таких как CGI и ISAPI.

Второй связан с использованием серверных сценариев и тех-нологии активных страниц Active Server Pages (ASP).

Активные серверы могут отличаться друг от друга функциональностью и специфическими ограничениями. Например, Perl присутствует, а PHP нет; PHP есть, но разрешается создавать только одну базу данных.

 

 

1.2. Программы CGI, схема их работы

Для того чтобы сервер Web мог вести диалог с пользователем, был разработан механизм программных расширений сервера, называемый стандартным шлюзовым интерфейсом Common Gateway Interface (CGI). Это часть Web-сервера, которая может взаимодействовать с другими программами, выполняющимися на этом Web-узле. И в этом смысле CGI является шлюзом для передачи данных, полученных от клиента.

Общая схема работы CGI состоит из следующих этапов:

· получение (через протокол HTTP) информации с клиентских машин (от пользователя);

· обработка полученной информации. В некоторых случаях CGI-программа не может обработать информацию (ответить на запрос) самостоятельно. Например, запрос может потребовать обращения к некоторой базе данных, которую CGI-программа читать не умеет. В этом случае CGI-программа на основании полученной информации формирует запрос к компетентной программе, выполняющейся на том же Web-сервере;

· отправка обработанной информации обратно в виде нового документа HTML.

При этом для ввода информации со стороны пользователя в документ HTML встраиваются формы, содержащие такие органы управления, как текстовые поля, списки, переключатели, кнопки и т.д.

Обычно одна из кнопок (типа Submit) предназначена для завершения ввода данных в форму. Когда пользователь заполнит всю форму, он нажимает эту кнопку, и данные из полей формы передаются программе CGI. Обработав данные, программа CGI динамически формирует новый документ HTML с результатами обработки и отправляет его обратно пользователю. При необходимости программа CGI может обращаться к СУБД.

 

Этот процесс проиллюстрирован на рис. 1.1.



Рис. 1.1. Взаимодействие браузера и сервера Web

Таким образом, программы CGI позволяют Web-серверу вести диалог с пользователем.

Что представляет собой программа CGI?

Это обычное консольное приложение, работающее в среде операционной системы сервера Web и осуществляющее обмен данными через стандартные потоки ввода и вывода.

Такое приложение загружается в оперативную память сервера и запускается только по явному запросу пользователя, когда к нему выполняется обращение из документа HTML (с помощью тега типа < form action=“obrabotka.php” method = “post”> ). Здесь CGIпрограмма — это “obrabotka.php”. Окончив обработку запроса пользователя, программа CGI завершает свою работу и выгружается из памяти сервера.

Программа CGI работает на сервере как отдельный процесс. В рамках этого процесса она способна, в частности, обращаться к базам данных для выборки или обновления информации.

 

1.3. Язык создания CGI-сценариев — PHP

Для использования технологии CGI программа Web-сервер должна удовлетворять определенным критериям — «поддерживать CGI». CGI-программы, запускаемые на Web-сервере, представлены не двоичным кодом (т.е. скомпилированным файлом), а текстовым. Поэтому для их выполнения требуется программа-интерпретатор того языка, на котором написана эта программа. Такой интерпретатор включается в состав Web-сервера и вызывается им при необходимости заняться выполнением программного кода.

CGI-сценарий (CGI-скрипт) — программа (в текстовом виде), предназначенная для исполнения на Web-сервере. Для создания CGI-скриптов можно использовать любой язык программирования — важно лишь, чтобы на том Web-сервере, где предполагается эту программу запускать, имелся интерпретатор этого языка.

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

От других CGI-языков РНР отличается в лучшую сторону прежде всего своей простотой.

При создании программы на РНР нет необходимости учитывать все те многочисленные мелочи, которые усложняют жизнь программистам на Perl или C++ [9]. Синтаксис языка РНР допускает его легкое освоение как начинающим программистом, так и тем, кто уже использовал ранее какой-либо язык программирования. Можно целиком и полностью сосредоточиться на решаемой задаче и не думать о мелочах.

Именно это и делает РНР наиболее подходящим вариантом для Web-дизайнера.

Одним из достоинств РНР является возможность без особых затруднений работать с серверами баз данных. Благодаря РНР использование базы данных на сайте стало едва ли не элементарным. Для работы с подавляющим большинством типов баз данных в РНР есть встроенные функции, поэтому теперь достаточно лишь установить на Web-сервере программу работы с базой данных (наиболее часто используется бесплатная MySQL — http: //www.mysql.com) и включить в текст PHP-сценария команды работы с нею.

 

 

Контрольные вопросы

1. Назовите и опишите разновидности Web-программирования.

2. Сформулируйте определение Web-сервера.

3. Покажите различия между пассивными и активными Webсерверами.

4. Назовите способы реализации активных Web-серверов.

5. Расшифруйте аббревиатуру CGI и объясните его природу.

6. Опишите схему работы CGI.

7. Что такое препроцессор?

8. Перечислите преимущества языка PHP перед другими CGIязыками.

2. ОБРАБОТКА НА СЕРВЕРЕ ЗАПРОСОВ С КЛИЕНТСКОЙ МАШИНЫ

Рис. 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

Действие Пример и описание
Внедрение PHP-скриптов в HTML-код Простейший способ такой: <? PHP-скрипт ? >
Комментарий однострочный // Вывод даты в формате: 23: 15, 08.05.2009 или # Однострочный комментарий
Комментарий многостроч- ный /* Многострочный комментарий*/
Оператор программы завершается символом «; ». Символ «; » ставится даже перед «else» $totalqty=$tireqty+$oilqty+$sparkqty;
Правила конструирования идентификаторов Первым символом в идентификаторах переменных должен быть символ $. Остальные требования к идентификаторам как в Паскале. Но идентификаторы регистрозависимые (однако, имена встроенных функций и служебные слова не регистрозависимые)
Строковые значения заклю- чаются в кавычки $name=”Расмус Лердоф”;
Задание констант define(" OILPRICE", 300);
Вывод данных на экран Оператор echo
Перевод курсора в начало следующей строки echo " < br> ";
Тег < P> перед выводимой строкой вставляет пустую строку echo " < p> Ваш заказ следующий";
Вывод строкового значения echo " Заказ обработан в ";
Вывод значения арифмети- ческого выражения echo (20+12); или Echo 20+12;
Вывод значения переменной echo $name;
Вывод значения константы echo CONST; //здесь CONST имя констан- ты
Вывод смешанного значения echo " $oilqty бутылки масла < br> ";
Конкатенация echo $oilqty. " бутылки масла < br> ";
Конкатенация и вычисление значения функции Echo “В массиве ”. count($arr). “элемен- тов”
Вывод имен переменных без интерпретации в виде последовательности символов Echo ‘$name Расмус Лердоф’; (выведет строку «$name Расмус Лердоф»)
Вывод значения функции echo date (" H: i, d. m. y." );
Форматирование для вывода числа с двумя десятичными знаками $totalamountf=number_format ($totalamount, 2);
Условный оператор If (условие) {ветвь 1}; else {ветвь 2};

Обратите внимание на то, что имена текстовых полей для ввода количества заказываемых изделий в коде формы (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.

Доменное имя Директория документов
abcd.test1.ru /home/test1.ru/abcd
ab.cd.test1.ru /home/test1.ru/ab.cd
test.localhost /home/localhost/test
ab.cd.localhost /home/localhost/ab.cd

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

Задание 1

Синтаксис языка

1. Чему равен результат операции 5%2? ###

2. В результате выполнения скрипта на экран будет выведено ###.

<?

$var=1; echo(++$var);

? >

3. В результате выполнения скрипта на экран будет выведено ###.

<?

$var=1; echo($var++);

? >

4. В результат выполнения скрипта на экран будет выведено ###.

<?

$var=”aaa”; echo($var++);

? >

5. echo (4< < 2) = ###

6. echo (5> > 1) = ###

7. echo (6|5) = ###

8. echo (6& 5) = ###

9. Правильно ли оформлен комментарий?

<?

echo(“Hello”); //Это комментарий

? >

¨ да

¨ нет

 

Типы данных

1. Отметьте типы данных PHP:

¨ integer

¨ string

¨ float

¨ array

¨ boolean

¨ object

 

2. В результате выполнения скрипта на экран будет выведено ###.

<?

$var_str=”5”; echo(gettype ($var_str));

? >

 

3. В результате выполнения скрипта на экран будет выведено ###.

<?

$var_num=5; echo(gettype ($var_num));

? >

 

4. В результате выполнения скрипта на экран будет выведено ###.

<?

$var=”5”;

settype ($var, integer); echo (gettype ($var));

? >

 

5. В результате выполнения скрипта на экран будет выведено ###.

<?

$var=”5”;

$var = (int) $var; echo (gettype ($var));

? >

 

6. Структурами для хранения данных являются:

¨ Массивы

¨

¨ стек

¨ очередь

¨ связный список

¨ дек

 

7. Стек работает по принципу:

¨ LIFO

¨ FIFO

 

8. Очередь работает по принципу:

¨ LIFO

¨ FIFO

 

9. Результатом выполнения скрипта будет ###.

<?

$car[] = “автобус”;

$car[] = “грузовик”; echo ($car[1]);

? >

 

10. Результатом выполнения скрипта будет ###.

<?

$car = array(“автобус”, “грузовик”); echo ($car[1]);

? >

 

11. Результатом выполнения скрипта будет ###.

<?

$car = array(“pc”=> “автобус”, “lc”=> “грузовик”); echo ($car[“lr”]);

? >

 

Операторы

1. В результат выполнения скрипта

<?

$flag1 = true;

$flag2= true;

 

$flag3= false;

if ($flag1 & & $flag2 || $flag3)

{

echo “< p> Условие истинно< /p> ”;

}

else

{

echo “< p> Условие ложно < /p> ”;

}

? >

 

на экран будет выведено:

¨ Условие истинно

¨ Условие ложно

 

2. Результат условной операции x < 0? —x: x;

¨ x

¨ -x

¨ абсолютное значение x

 

3. Правильно ли дана структура оператора Switch? Switch (expression)

{

case value1: statements; break;

case value2: statements; break; default: statements;

}

¨ да

¨ нет

 

4. В результате работы скрипта будет выведено ### чисел.

<?

$a=0;

 

while ($a< =10)

{

echo " $a< br> ";

$a=$a+1;

}

? >

 

5. В результате работы скрипта будет выведено число ###.

<?

$sum=0;

$i=1; do

{

$sum=$sum+$i;

$i=$i+1;

}

while($i< =5); echo $sum;

? >

 

6. В результате работы скрипта будет выведено ### чисел.

<?

$var = 5;

for ($i = 0; $i< =$var; $i++)

{

echo ($i); echo(‘< br> ’);

}

? >

 

Функции

1. В результате работы скрипта будет выведено число ###.

<?

Function get_sum()

{

$var = 5;

$var1 = 10;

 

$sum = $var + $var1; return $sum;

}

echo (get_sum();

? >

 

2. В результате работы скрипта будет выведено число ###.

<?

Function get_sum()

{

$var = 5;

$var1 = 10;

$sum = $var + $var1; echo ($sum);

}

get_sum();

? >

 

3. В результате работы скрипта будет выведено число ###.

<?

Function get_sum($var, $var1)

{

$sum = $var + $var1; echo ($sum);

}

get_sum(5, 2);

? >

 

4. В результате работы скрипта будет выведено число ###.

<?

Function get_sum()

{

$var = 5; echo ($var);

}

$var =10; get_sum();

? >

 

5. В результате работы скрипта будет выведено число ###.

<?

Function get_sum()

{

global $var;

$var = 5; echo ($var);

}

$var =10; get_sum();

? >

 

ЛИТЕРАТУРА

1. Когзолл Дж. PHP5. Полное руководство. М., 2006.

2. Колисниченко Д.Н. Современный сайт на PHP b JavaScript. СПб., 2009.

3. Кравец О.Я., Солдатов Е.А., Селиванова М.В. Практикум по разработке Интернет-приложений: Учеб. пособие. Изд. 2-е, перераб. и доп. Уфа, 2008.

4. Кузнецов М.В., Симдянов И.В. Самоучитель РНР 5. СПб., 2004.

5. Кухарчик А. РНР: обучение на примерах. Минск, 2004.

6. Мазуркевич А., Еловой Д. РНР: настольная книга программиста. М., 2004.

7. Руководство по PHP. URL: http: //www.php.net/manual/ru/

8. Савельева Н.В. Основы программирования на PHP: Учеб. пособие для студ. вузов. М., 2005.

9. Томсон Л., Веллинг Л. Разработка Web-приложений на PHP и MySQL. 2-е изд., испр. СПб., 2003.

10. Фролов А.В., Фролов Г.В. Базы данных в Интернете: практическое руководство по созданию Web-приложений с базами данных. Изд. 2-е, испр. М., 2000.

11. Шапошников И.В. РНР 5.1. Учебный курс. СПб., 2007.

 

 

Интернет-ресурсы

1. PHP (www.php.net)

2. Web-сервер Apache (www.apache.org)

3. Сервер баз данных MySQL (www.mysql.com)

4. Денвер (denwer.ru)

 

 

СЕРВЕРНОЕ

ПРОГРАММИРОВАНИЕ

Учебное пособие

 

 


ПРЕДИСЛОВИЕ

Web-программирование является все более широко используемой областью в программировании. Оно берет начало со времени создания «всемирной паутины» — WWW и постоянно развивается и расширяется. Для создания современного сайта требуется использовать все разновидности Web-программирования: HTML- разметку, каскадные таблицы стилей, Web-программирование клиентское и серверное.

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

 

1. ВВЕДЕНИЕ В СЕРВЕРНОЕ WEB-ПРОГРАММИРОВАНИЕ

Web-программирование — это разработка любых программных продуктов, предназначенных для работы на сайтах World Wide Web. Имеются следующие разновидности Web-программирования:

1. Разработка Web -страниц на чистом HTML. Является Web-программированием, потому что при просмотре страницы браузер фактически исполняет код HTML, форматируя текст согласно инструкциям этого языка. На профессиональных сайтах, как правило, для оформления используются каскадные таблицы стилей CSS (cascading style sheets). Поэтому их использование также следует отнести к Web-программированию.

2. Клиентское Web -программирование. Это использование на Web-страницах технологий JavaScript и VBScript для динамического изменения внешнего вида Web-страницы при ее просмотре и выполнение обработки информации, введенной пользователем в формы.

3. Серверное Web -программирование. Это создание CGI-приложений. CGI (сокращение от Common Gateway Interface) — технология, позволяющая запускать на Web-сервере программы, имеющие возможность получать данные от посетителей сайтов, поддерживаемых этим Web-сервером, и в свою очередь выдавать им обработанные данные в виде Web-страниц или других файлов. Прежде чем перейти к детальному описанию особенностей

Web-приложений, вспомним принципы работы Web-сервера.

 

 

1.1. Пассивные и активные серверы Web

Web -сервер — это программа, устанавливаемая на узле сети Интернет и выдающая посетителям этого узла Web-страницы по запросам. Также Web-сервером часто называется узел, на котором эта программа запущена, или даже компьютер, являющийся таким узлом. В Интернете наиболее часто используются серверы Apache (67, 2%) и MS IIS (21, 02%) [8].

Различают пассивные и активные серверы Web. Если страницы сервера содержат только статическую текстовую и мультимедийную информацию, а также гипертекстовые ссылки на другие страницы, то сервер называется пассивным. Такой сервер способен только выдавать Web-страницы по запросам пользователей.

В отличие от пассивных, активные серверы могут:

· вступать в диалог с пользователем, например, запрашивая и принимая от него информацию;

· динамически создавать (не просто извлекать из своей памяти имеющиеся там Web-страницы) Web-страницы для предъявления клиентам;

· при формировании динамических страниц обращаться к базам данных сервера, извлекать оттуда информацию и включать ее в формируемую Web-страницу.

Очевидно, что Web-страницы активного сервера кроме статической текстовой и мультимедийной информации, а также гипертекстовых ссылок должны содержать другие элементы для реализации перечисленных возможностей.

Имеется два варианта реализации активных Web-серверов. Первый из них предполагает применение специальных программных расширений Web-сервера, таких как CGI и ISAPI.

Второй связан с использованием серверных сценариев и тех-нологии активных страниц Active Server Pages (ASP).

Активные серверы могут отличаться друг от друга функциональностью и специфическими ограничениями. Например, Perl присутствует, а PHP нет; PHP есть, но разрешается создавать только одну базу данных.

 

 

1.2. Программы CGI, схема их работы

Для того чтобы сервер Web мог вести диалог с пользователем, был разработан механизм программных расширений сервера, называемый стандартным шлюзовым интерфейсом Common Gateway Interface (CGI). Это часть Web-сервера, которая может взаимодействовать с другими программами, выполняющимися на этом Web-узле. И в этом смысле CGI является шлюзом для передачи данных, полученных от клиента.

Общая схема работы CGI состоит из следующих этапов:

· получение (через протокол HTTP) информации с клиентских машин (от пользователя);

· обработка полученной информации. В некоторых случаях CGI-программа не может обработать информацию (ответить на запрос) самостоятельно. Например, запрос может потребовать обращения к некоторой базе данных, которую CGI-программа читать не умеет. В этом случае CGI-программа на основании полученной информации формирует запрос к компетентной программе, выполняющейся на том же Web-сервере;

· отправка обработанной информации обратно в виде нового документа HTML.

При этом для ввода информации со стороны пользователя в документ HTML встраиваются формы, содержащие такие органы управления, как текстовые поля, списки, переключатели, кнопки и т.д.

Обычно одна из кнопок (типа Submit) предназначена для завершения ввода данных в форму. Когда пользователь заполнит всю форму, он нажимает эту кнопку, и данные из полей формы передаются программе CGI. Обработав данные, программа CGI динамически формирует новый документ HTML с результатами обработки и отправляет его обратно пользователю. При необходимости программа CGI может обращаться к СУБД.

 

Этот процесс проиллюстрирован на рис. 1.1.



Рис. 1.1. Взаимодействие браузера и сервера Web

Таким образом, программы CGI позволяют Web-серверу вести диалог с пользователем.

Что представляет собой программа CGI?

Это обычное консольное приложение, работающее в среде операционной системы сервера Web и осуществляющее обмен данными через стандартные потоки ввода и вывода.

Такое приложение загружается в оперативную память сервера и запускается только по явному запросу пользователя, когда к нему выполняется обращение из документа HTML (с помощью тега типа < form action=“obrabotka.php” method = “post”> ). Здесь CGIпрограмма — это “obrabotka.php”. Окончив обработку запроса пользователя, программа CGI завершает свою работу и выгружается из памяти сервера.

Программа CGI работает на сервере как отдельный процесс. В рамках этого процесса она способна, в частности, обращаться к базам данных для выборки или обновления информации.

 

1.3. Язык создания CGI-сценариев — PHP

Для использования технологии CGI программа Web-сервер должна удовлетворять определенным критериям — «поддерживать CGI». CGI-программы, запускаемые на Web-сервере, представлены не двоичным кодом (т.е. скомпилированным файлом), а текстовым. Поэтому для их выполнения требуется программа-интерпретатор того языка, на котором написана эта программа. Такой интерпретатор включается в состав Web-сервера и вызывается им при необходимости заняться выполнением программного кода.

CGI-сценарий (CGI-скрипт) — программа (в текстовом виде), предназначенная для исполнения на Web-сервере. Для создания CGI-скриптов можно использовать любой язык программирования — важно лишь, чтобы на том Web-сервере, где предполагается эту программу запускать, имелся интерпретатор этого языка.

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

От других CGI-языков РНР отличается в лучшую сторону прежде всего своей простотой.

При создании программы на РНР нет необходимости учитывать все те многочисленные мелочи, которые усложняют жизнь программистам на Perl или C++ [9]. Синтаксис языка РНР допускает его легкое освоение как начинающим программистом, так и тем, кто уже использовал ранее какой-либо язык программирования. Можно целиком и полностью сосредоточиться на решаемой задаче и не думать о мелочах.

Именно это и делает РНР наиболее подходящим вариантом для Web-дизайнера.

Одним из достоинств РНР является возможность без особых затруднений работать с серверами баз данных. Благодаря РНР использование базы данных на сайте стало едва ли не элементарным. Для работы с подавляющим большинством типов баз данных в РНР есть встроенные функции, поэтому теперь достаточно лишь установить на Web-сервере программу работы с базой данных (наиболее часто используется бесплатная MySQL — http: //www.mysql.com) и включить в текст PHP-сценария команды работы с нею.

 

 

Контрольные вопросы

1. Назовите и опишите разновидности Web-программирования.

2. Сформулируйте определение Web-сервера.

3. Покажите различия между пассивными и активными Webсерверами.

4. Назовите способы реализации активных Web-серверов.

5. Расшифруйте аббревиатуру CGI и объясните его природу.

6. Опишите схему работы CGI.

7. Что такое препроцессор?

8. Перечислите преимущества языка PHP перед другими CGIязыками.

2. ОБРАБОТКА НА СЕРВЕРЕ ЗАПРОСОВ С КЛИЕНТСКОЙ МАШИНЫ

PHP -сценарий обработки на сервере заказа


Поделиться:



Последнее изменение этой страницы: 2019-05-06; Просмотров: 198; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.69 с.)
Главная | Случайная страница | Обратная связь