Создание серверных приложений на языке PERL


WWW,CGI-специфика - часть 2



print "Ok";


Обратите внимание на двойной перевод строки в конце заголовка.


(*)Примечание:


Если у вас нет доступа к логу ошибок сервера, для отладки скрипта используйте

директиву use CGI::Carp qw (fatalsToBrowser); В этом случае при фатальной ошибке, приводящей к завершению скрипта, эта ошибка будет видна вам в браузере.



Q: Как узнать IP человека, вызвавшего скрипт?


A: $ENV{'REMOTE_ADDR'}



Q: Как узнать, с какой страницы идет ссылка на скрипт?


A: $ENV{'HTTP_REFERER'}



Q: Как узнать IP прокси, если через нее запустили скрипт?


A1 $ENV{'HTTP_VIA'}


A2: Hекоторые прокси добавляют в конец заголовка строку типа

", via ProxyName", и в результате вместо переменной HTTP_VIA эту строку можно

наблюдать в конце переменной $ENV{'HTTP_USER_AGENT'}



Q: А можно ли узнать IP юзера, запустившего скрипт через прокси?


A: $ENV{'HTTP_X_FORWARDED_FOR'}. Hо не все прокси обеспечивают IP сидящего за

ними юзера. "Честные" прокси,- у провайдеров, например,- это делают. А

некоторые халявные (анонимные) прокси-сервера, могут и не показывать IP сидящего "за" ними пользователя.



Q: А какие еще значения есть у этого %ENV ?


A: for (keys %ENV) { print "$_ = ${ENV{$_}}\n" }


A1: То же самое, но по-другому записанное (более "перловое" решение):


print join("
",map("$_ = $ENV{$_}", keys %ENV));



Q: Как запускать скрипт на сервере через определенные промежутки времени, или

в определенное время суток, день недели, месяц?


A: Это возможно, если есть шелл-доступ на сервер. Читайте man crontab



Q: Как, зная ip, получить имя (DNS), за которым этот ip закреплен?


A: Встроенная функция gethostbyaddr()



Q: Что такое method GET, и что такое method POST?


A1: rfc2616


A2: GET - передача параметров скрипту из строки location браузера. Пример:


script.cgi?mode=aa&type=bb&length=12


Минусы этого метода:


1. Все параметры видны в строке. Если в кач-ве параметров передается пароль

- получается дырка в безопасности




Начало  Назад  Вперед