Оразов И., Еркеева Ж.Н.

Южно-Казахстанский государственный университет им. М.Ауезова, Казахстан

 

Применение CGI-технологии в WEB программировании

 

Введение. HTML-документы обычно описываются на языке HTML (HyperText Janarup Language, язык гипертекстовой разметки), ставшим основным языком описания документов в Internet. Язык РНР (Hypertext Preprocessor, гипертекстовый препроцессор) предназначен для создания динамических Web-проектов в Интернете.

Цель данной статьи познакомить пользователя с той частью Web-программирования, которая связана с созданием интерактивных интерфейсов. Предполагается, что пользователь знаком с основами WWW, HTML и РНР.

Интерактивый интерфейс. В общем случае, интерактивный интерфейс пользователя представляет собой систему, обеспечивающую взаимодействие пользователя и Web-проекта. Для WWW, интерактивный интерфейс можно определить как последовательность Web-документов, реализующих интерфейс пользователя.

Можно условно классифицировать принципы построения интерфейса по типу формирования Web-проекта [1]:

·                       статический

·                       динамический

В первом случае источником интерфейса является Web-документ, созданный в текстовом редакторе. Следовательно, данный документ остается неизменным в течение использования. Во втором случае источником интерфейса является Web-документ, сгенерированный cgi-модулем. Следовательно, появляется некоторая гибкость в видоизменении интерфейса во время использования.

Задача построения выше названных интерфейсов делится на две части:

·                       клиентская 

·                       серверная 

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

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

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

Если программа, запускаемая на Web-сервере, представлена не двоичным кодом, а текстовым (CGI-скрипт), то для ее выполнения требуется препроцессор. Препроцессор включается в состав web-сервера и вызывается им при необходимости заняться выполнением программного кода. PHP является именно препроцессором, что, собственно, и видно из его названия.

Web-программирование – разработка любых программных проектов, предназначенных для работы на WWW. В настоящее время под Web-программированием понимают использование в Web-проекте технологий JavaScript для достижения сложных эффектов и создание CGI-приложений.

Все языки программирования, используемые при разработке Web-проектов, можно разделить на две большие группы. К первой относится JavaScript, код которого выполняется на клиентской части Web-проекта.   

PHP относится ко второй группе – программа на PHP (РНР-скрипт) исполняется на web-сервере. Однако от других CGI-языков PHP очень сильно отличается в лучшую сторону, прежде всего своей простотой.

Работа с РНР. Язык PHP обрабатывает данные на сервере. Чтобы проверить работу РНР-скрипта, нужен Web-сервер в Интернете. Эту проблему можно решить двумя способами. Традиционный путь решения прост – зарегистрировать проект в Интернете на сервере с поддержкой PHP и закачивать туда обновления РНР-скрипта. Иногда используют режим редактирования в FTP-клиенте. Или другой, которым мы воспользуемся, установить Web-сервер (Apache) на компьютере. Он занимает мало места на жестком диске и очень удобен в использовании (проверять скрипты на своем компьютере и не нужен доступ в Интернет). Последнюю версию сервера Apache можно скачать с официального сайта разработчиков [2].

Основным источником сведений по РНР является официальный сайт его разработчиков [3]. Именно на этом сайте представлены дистрибутивы различных версий РНР для разных платформ. Также на сайте размещаются руководства по РНР на разных языках, а кроме того, списки сайтов, посвященных программированию на РНР.

Для работы с большинством типов баз данных в РНР есть встроенные функции, поэтому достаточно лишь установить на web-сервере программу работы с базой данных. Наиболее часто используется бесплатная МуSOL [4].

Программный пакет «Denwer». Установка Apache, PHP, MySQL из их оригинальных дистрибутивов может стать для вас весьма затруднительной вследствие определенной сложности в настройке этих программ. Но имеются специализированные программные пакеты для установки этих приложений. Наиболее совершенным и самым популярным среди них является проект «Denwer».

«Denwer» – это комплект программ, состоящий из последних версий [5]:

·                       Web-сервера Apache;

·                       Интерпретатора языка PHP;

·                       Интерпретатора языка Perl;

·                       СУБД MySQL.

В «Denwer» все эти компоненты избавлены от малоиспользуемых модулей и объединены в единый установочный пакет.

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

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

Проект будет состоять из трех файлов. Это сам скрипт, файл данных с количеством голосов и файл хранения ip-адреса посетителя, который проголосовал последним. Файл данных назовем – dayis.dat, а файл для хранения ip-адреса – ip.txt. Оба должны находиться в текущей папке.

Сначала напишем РНР-скрипт, который будет обрабатывать полученные данные (dayis.рһр).

<html> <!-- dayis.рһр - Еркеева Жанар Нуртазаевна - - >

<head> <title> Дауыс беру </title> </head> <body><center>

<?php

$dayis = file ("dayis.dat"); $i = 0;

$f1 = fopen ("ip.txt", "r") or die ("ip.txt – файлының ашылуы қате");

$ip = fgets ($f1);

fclose ($f1); if (isset ($janar) && $remote_addr! = $ip)

{$dayis [$janar-1] = 1;

$f1 = fopen ("dayis.dat", "w=") or die ("dayis.dat – файлының ашылуы қате");

for ($j = 0; $j<5; $j++) {fputs ($f1, $dayis [$j]); if ($j == $janar-1) fputs ($f1,

"\r\n"); }

fclose ($f1);

$f1 = fopen ("ip.txt", "w+") or die ("ip.txt – файлының ашылуы қате");

fputs ($f1, $remote_addr); fclose ($f1); }

$sum = 0; for ($j = 0; $j<count ($dayis); $j++) {$sum+=$dayis[$j];}

for ($j = 0; $j<count ($dayis); $j++) {$procent [$j] = round (100 * $dayis[$j] /

$sum), "%";} $j = 0;

?>

 

Теперь напишем РНР-скрипт для вывода формы и статистики голосования.

<form method=get action="dayis.php">

<table border=1 cellspacing=0 width=200><tr

bgcolor="#ffffff"> <td align=center>

<font color="#0000ff"> <b><br> Веб-бет сізге ұнады ма? </td> </tr>

<tr bgcolor="#ffffff"><td><br>

<input type="radio" name="janar" checked value=1> өте ұнады

<?php echo $dayis[$i++]; echo $procent [$j++]; ?> <br>

<input type="radio" name="janar" checked value=2> ұнады

<?php echo $dayis[$i++]; echo $procent [$j++]; ?> <br>

<input type="radio" name="janar" checked value=3> орташа

<?php echo $dayis[$i++]; echo $procent [$j++]; ?> <br>

<input type="radio" name="janar" checked value=4> ұнаған жоқ

<?php echo $dayis[$i++]; echo $procent [$j++]; ?> <br>

<input type="radio" name="janar" checked value=5> білмеймін

<?php echo $dayis[$i++]; echo $procent [$j++]; ?> </b></font><br>

</td></tr> </table></form></center></body></html>

 

Внешний вид формы можно увидеть на рисунке.

 

Литература

 

1.     Ибрагимов О.М. Web-бағдарламалауға кіріспе. Оқу құралы. -Шымкент: ОҚМУ, 2012. -128 б. ISBN 9965-467-41-2

2.     http://www.apache.org

3.     http://www.php.net

4.     http://www. mysql.com

5.     http://www.denwer.ru