Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Формирование возвращаемого документа




Вне зависимости от метода передачи данных, GET или POST, результат своей работы GCI-скрипт должен направить в стандартный поток вывода.

При формировании возвращаемого документа GCI-скрипт должен предварить документ хотя бы одним заголовком ответа сервера, определяющим media-тип возвращаемого документа, заголовком Content-type. Заголовок должен быть отделен от собственно возвращаемого документа пустой строкой, как того требует структура ответа сервера.

Чаще всего GCI-скрипт используется для создания html-документов на основе данных, полученных от клиента. В этом случае заголовок ответа сервера должен определять media-тип возвращаемого документа как текст в формате html (Content-type: text/html), за которым необходимо вывести пустую строку, отделяющую заголовок от html-документа.

Web-сервер возвращает результат, сформированный GCI-скриптом, клиенту, возможно дополняя его статусной строкой и другими заголовками ответа сервера.

GCI-скрипт может сформировать полный ответ (со всеми заголовками ответа сервера). В этом случае web-сервер ничего не изменяет в результате работы GCI-скрипта, только пересылает его клиенту «как есть».

 

Пример: на стороне клиента в поля формы вносятся имя и возраст, в зависимости от возраста возвращаются разные приветствия (рассматриваются два варианта: для методов GET и POST).

Метод GET

HTML-документ, содержащий форму:

<html>

<form action=http://localhost/cgi/hello.exe method=get>

<p>ИМЯ<input type=text name=name>

<p>ВОЗРАСТ<input type=text name=age>

<p><input type=submit>

</form>

 

CGI-приложение (файл hello.cpp)

void main()

{

int age;

char *name=new char[256];

char *query_string=new char[256];

query_string=getenv("QUERY_STRING");

 

//query_string=”name=Maria&age=18”

//из строки извлекаются подстроки “Maria” и “18”

//и присваиваются переменным name и age соответственно

 

cout<<”Content-type: text/html\n\n”;

cout<<”<html>”;

if(age<=16) cout<<”Привет, ”;

if(age>16) cout<<”Здравствуйте, ”;

cout<<name<<”</html>”;

}

 

Метод POST

HTML-документ, содержащий форму:

<html>

<form action=http://localhost/cgi/hello.exe method=post>

<p>ИМЯ<input type=text name=name>

<p>ВОЗРАСТ<input type=text name=age>

<p><input type=submit>

</form>

 

CGI-приложение (файл hello.cpp)

void main()

{

int age;

char *name=new char[256];

int length=atoi(getenv("CONTENT_LENGTH"));

char * string=new char[length+1];

cin≫string;

 

//string=”name=Maria&age=18”

//из строки извлекаются подстроки “Maria” и “18”

//и присваиваются переменным name и age соответственно

 

cout<<”Content-type: text/html\n\n”;

cout<<”<html>”;

if(age<=16) cout<<”Привет, ”;

if(age>16) cout<<”Здравствуйте, ”;

cout<<name<<”</html>”;

}

 

Установка интерпретатора PHP как модуля web-сервера Apache

Интерпретатор PHP может быть установлен для работы в двух режимах: как модуль web-сервера Apache или как обработчик CGI-скриптов.

Для установки интерпретатора PHP как модуля web-сервера Apache достаточно распаковать zip-архив с дистрибутивом, например, на диск С:\php и создать копию файла php.ini-production с именем php.ini в той же папке.

В файле php.ini можно выполнить настройки путем изменения параметров соответствующих директив.

Директива error_reporting задает уровень протоколирования ошибки. Параметр директивы может быть либо числом, либо именованной константой. Параметр E_ALL позволяет отображать предупреждения и ошибки всех уровней.

error_reporting = E_ALL

 

Директива extension позволяет загрузить необходимые динамические расширения.

extension=php_gd2.dll   ;для работы с графической библиотекой

extension=php_mysql.dll ;для работы с СУБД MySQL

 

Директива display_errors позволяет выводить сообщения об ошибках на экран вместе с остальным выводом, либо скрывать сообщения об ошибках от пользователя. Для отладки скриптов рекомендуется использовать директиву display_errors с параметром On.

display_errors = On

 

После отладки скриптов предупреждения и сообщения об ошибках можно скрывать от пользователя, выводя их в файл, расположенный на стороне сервера. Директива error_log задает расположение файла с предупреждениями и сообщениями об ошибках.

display_errors = Off

error_log = с:\php\phperror.log

 

Директива short_open_tag определяет сокращенную или полную форму записи тега для вставки php-скрипта в html-разметку.

short_open_tag = Off      ;<?php … ?> и <script> … </script>

или

short_open_tag = On      ;дополнительно <? … ?>

 

Для настройки web-сервера Apache в основной конфигурационный файл httpd.conf следует добавить директивы LoadModule, AddHandler и PHPIniDir.

LoadModule php5_module “c:/php/php5apache2_2.dll”

AddHandler application/x-httpd-php .php

PHPIniDir “c:/php”

 

Установка интерпретатора PHP как обработчика CGI-скриптов

Для установки интерпретатора PHP как обработчика CGI-скриптов настройки файла php.ini выполняются также, как было описано выше, для настройки web-сервера Apache в основной конфигурационный файл httpd.conf следует добавить директивы ScriptAlias, AddType и Action.

ScriptAlias /php/ “c:/php/”

AddType application/x-httpd-php .php

Action application/x-httpd-php “/php/php-cgi.exe”

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 508.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...