Создание серверных приложений на языке 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. Все параметры видны в строке. Если в кач-ве параметров передается пароль

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




Содержание  Назад  Вперед