| 
 Урок 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] 
[приложение Б] 
[приложение В] 
[заключение] 
[благодарности] 
 
  |