Вернуться на сайт гостевой книги Power Perl Educaton Help Download Links Off-line version

Урок 10. Встроенные переменные, получение данных методом GET

Когда сервер выполняет скрипт, для него создаются некоторые переменные окружения, среди которых как локальные данные (адрес скрипта на сервере, версия П/О сервера), так и данные полученные с HTTP запросом (версия браузера, IP удаленной машины и т.д.) . Знать эти данные для CGI программиста просто жизненно важно. Вот эти переменные:
$ENV{'REQUEST_METHOD'} Это одно из самых главных поле используемое для определения метода запроса HTTP. Протокол HTTP использует методы GET и POST для запроса к серверу. Они отличаются тем что при методе GET запрос является как бы частью URL т.е. http://..../cgi-bin/myscript.cgi?param=value а при методе POST данные передаются в теле HTTP-запроса (при GET тело запроса пусто).
Для нас пока интересен только метод GET.
$ENV{'QUERY_STRING'} Это строка запроса при методе GET.
$ENV{'CONTENT_TYPE'} Тип тела запроса.
$ENV{'REMOTE_ADDR'} IP-Адрес удаленного Хоста, делающего данный запрос.
$ENV{'REMOTE_HOST'} Если запрашивающий Хост имеет доменное имя, то эта переменная содержит его, в противном случае -тот же самый IP-адресс что и REMOTE_ADDR.
$ENV{'SCRIPT_NAME'} Содержит URL адрес файла скрипта.
$ENV{'SCRIPT_FILENAME'} Полный путь к скрипту на сервере.
$ENV{'SERVER_NAME'} Имя серера ,чаще всего доменное как www.microsoft.com ,но в редких случаях за неимением такового может быть IP-адресом.
$ENV{'SERVER_PORT'} TCP-Порт сервера использующийся для соединения .По умолчанию HTTP-порт 80, хотя может быть в некоторых случаях другим.
$ENV{'SERVER_SOFTWARE'} Программное обеспечение сервера.
$ENV{'AUTH_TYPE'}
$ENV{'REMOTE_USER'}
Эти переменные определены в том случае, когда запрошенный ресурс требует аутентификации пользователя.
$ENV{'HTTP_ACCEPT'} Давая запрос на сервер браузер обычно рассчитывает получить информацию определенного формата, и для этого он в заголовке запроса указывает поле Accept:, Отсюда скрипту поступает список тех MIME, которые браузер готов принять в качестве ответа от сервера.
$ENV{'HTTP_USER_AGENT'} Браузер обычно посылает на сервер и информацию о себе, чтоб базируясь на знании особенностей и недостатков конкретных браузеров CGI-скрипт мог выдать информацию с учетом этого. Например, разные браузеры могут поддерживать или не поддерживать какие-то HTML тэги.
$ENV{'CONTENT_LENGTH'} Длина в байтах тела запроса.
$ENV{'GATEWAY_INTERFACE'} Версия протокола CGI.
$ENV{'SERVER_PROTOCOL'} Версия HTTP протокола сервера.

Получение данных методом GET

Суть метода GET заключается в передаче некоторого объема информации вместе с URL скрипта. Для отделения URL от передаваемой информации используют знак "?" (вопросительный знак). Неплохо бы чисто формально напомнить, что все пробелы заменяются в URL на знак '+', а все специальные и непечатные символы на последовательность %hh ,где hh-шестнадцатиричный код символа. Методом GET можно одновременно передавать несколько значений. Как это делается я расскажу вам позже, а пока будем довольствоваться одним передаваемым значением.

* * * *

Напишем программу, которая выводит квадрат числа, если передаем ей число, или строку, если передаем текстовую строку. Передавать данные следует примерно так: "http://.../cgi-bin/script.pl?256"

#!/usr/bin/perl
print "Content-Type: text/html\n\n";

if ($ENV{'QUERY_STRING'}**2 == 0){print $ENV{'QUERY_STRING'}}
else{print $ENV{'QUERY_STRING'}**2}

И еще одна программка, выводящая некоторые сведения о Вашем сервере:

#!/usr/bin/perl
#programm 9
print "Content-Type: text/html\n\n";

@array=($ENV{'SERVER_SOFTWARE'},$ENV{'SERVER_NAME'});
@array=(@array,$ENV{'SCRIPT_FILENAME'},$ENV{'HTTP_USER_AGENT'});
print "<table>";
foreach (@array){
print "<tr><td>$_</td></tr>\n";
}
print "</table>"

* * * *

Попробуйте написать программу, выводящую таблицу Пифагора с максимальным значением по оси X и Y, передаваемым методом GET.
Сделайте так, чтобы ячейки закрашивались в шахматном порядке, а оси имели черный цвет.

Напишите программу, которая выводит символьную строку, переданную скрипту только в том случае, если IP удаленной машины не соответствует 127.0.0.1 .

[Содержание]  [Вступление]  [необходимое для начала изучения]  [урок 1]  [урок 2]  [урок 3]  [урок 4]  [урок 5]  [урок 6]  [урок 7]  [урок 8]  [урок 9]  [урок 10]  [урок 11]  [урок 12]  [урок 13]  [урок 14]  [урок 15]  [урок 16]  [урок 17]  [урок 18]  [урок 19]  [урок 20]  [урок 21]  [урок 22]  [урок 23]  [урок 24]  [урок 25]  [урок 26]  [урок 27]  [урок 28]  [правила хорошего тона]  [приложение A]  [приложение Б]  [приложение В]  [заключение]  [благодарности] 


107621

82
15

HOLMS.ru Counter -эфхъё ЎшЄшЁютрэш  Counter CO.KZ


Copyright © ClericICN, 2002 - 2003