- - - -
CGI :: Информация - Информация о среде CGI
Версия 0.86
Слишком часто у программ Perl есть такая информация, как имя сценария, усердно кодируемое в их источник. Вообще говоря, жесткий кодирование-это плохой стиль, поскольку он может затруднить чтение программ, и это снижает читаемость и мобильность. CGI :: Информация пытается удалить это.
Кроме того, чтобы помочь отладке сценариев, CGI :: Info пытается сделать разумные вещи, когда вы не запускаете программу в среде CGI.
CGI :: Info также предоставляет простой брандмауэр веб -приложения. В то время как вы не должны полагаться только на это, чтобы обеспечить безопасность вашего сайта, это еще один слой и каждый маленький помогает.
use CGI::Info;
my $info = CGI::Info->new();
# ...
Создает объект CGI :: Info.
Требуется четыре дополнительных аргумента, разрешающих, ожидайте, ожидают и upload_dir, которые задокументированы в методе Params ().
Принимает дополнительную плату параметров, чтобы журналы сообщений на Sys :: Syslog. Это может быть логически, чтобы включить/отключить регистрацию в системный журнал или ссылку на хэш, который должен быть предоставлен Sys :: Syslog :: SetLogsock.
Принимает дополнительные регистраторы параметров, объект, который используется для предупреждений
Принимает дополнительный кэш параметров, объект, который используется для кэширования поиска IP. Этот объект кэша является объектом, который понимает сообщения get () и set (), такие как объект CHI.
Принимает дополнительный параметр max_upload, который является максимальным размером файла, который вы можете загрузить (-1 без ограничения), по умолчанию составляет 512 МБ.
Возвращает имя сценария CGI. Это полезно для публикации, избегая тем самым внедрению жестких путей в формы
use CGI::Info;
my $info = CGI::Info->new();
my $script_name = $info->script_name();
# ...
print "<form method="POST" action=$script_name name="my_form">n";
Находит полное название пути сценария.
use CGI::Info;
my $info = CGI::Info->new();
my $fullname = $info->script_path();
my @statb = stat($fullname);
if(@statb) {
my $mtime = localtime $statb[9];
print "Last-Modified: $mtimen";
# TODO: only for HTTP/1.1 connections
# $etag = Digest::MD5::md5_hex($html);
printf "ETag: "%x"n", $statb[9];
}
Возвращает каталог файловой системы, содержащий скрипт.
use CGI::Info;
use File::Spec;
my $info = CGI::Info->new();
print 'HTML files are normally stored in ', $info->script_dir(), '/', File::Spec->updir(), "n";
# or
use lib CGI::Info::script_dir() . '../lib';
Верните имя хоста текущего веб-сервера, согласно CGI. Если имя не может быть определена с веб-сервера, имени хоста системы используется в качестве падения назад. Это может быть не то же самое, что и машина, на которой работает сценарий CGI, некоторые интернет -провайдеры и другие сайты запускают сценарии на разных машинах от тех, кто обеспечивает статическое содержание. Есть большая вероятность, что это будет Domain_Name (), приготовленная либо с «www», либо «cgi».
use CGI::Info;
my $info = CGI::Info->new();
my $host_name = $info->host_name();
my $protocol = $info->protocol();
# ...
print "Thank you for visiting our <A HREF="$protocol://$host_name">Website!</A>";
Domain_Name - это имя контролирующего домена для этого веб -сайта. Обычно это будет похоже на host_name, но ему не хватает префиксов http: // или www.
Верните URL -адрес машины, запускающего сценарий CGI.
Возвращает ссылку на хэш -список аргументов CGI.
CGI :: Информация помогает вам проверить ваш скрипт перед развертыванием на веб -сайте: если он не находится в среде CGI (например, сценарий тестируется из командной строки), используются аргументы командной строки программы (список паров ключа = значения), если нет аргументов командной строки, тогда они считываются из STDIN в виде списка строк ключа = значения. Также вы можете дать один из-таблетов,--прогонка,-мобиль и-робот, чтобы имитировать эти агенты. Например:
./script.cgi --mobile name=Nigel
Возвращает Undef, если параметры не могут быть определены или если не было дано.
Если аргумент дается два раза или более, то значения помещаются в запятую строку.
Возвращенное значение хэша может быть передано в CGI :: Untaine.
Принимает четыре дополнительных параметра: разрешить, ожидать, logger и upload_dir. Параметры передаются в хэш или ссылку на хэш. Последнее более эффективно, поскольку он ставит меньше на стек.
ALLECT - это ссылка на хэш -список параметров CGI, которые вы позволите. Значение для каждой записи представляет собой регулярное выражение разрешенных значений для ключа. Значение Undef означает, что любое значение будет разрешено. Аргументы не в списке молча игнорируются. Это полезно, чтобы помочь блокировать атаки на вашем сайте.
Ожидайте ссылку на список аргументов, которые вы ожидаете увидеть и передать. Аргументы не в списке молча игнорируются. Это полезно, чтобы помочь блокировать атаки на вашем сайте. Его использование устарело, вместо этого используется. Ожидайте, что будет удалено в более поздней версии.
Upload_dir - это строка, содержащая каталог, в котором должны храниться файлы, загружаемые файлы.
Принимает дополнительную регистрацию параметров, объект, который используется для предупреждений и следов. Этот объект Logger - это объект, который понимает сообщения warn () и trace (), такие как журнал :: log4perl или log :: Любой объект.
Аргументы разрешения, ожидайте, регистратор и upload_dir также могут быть переданы конструктору.
use CGI::Info;
use CGI::Untaint;
# ...
my $info = CGI::Info->new();
my %params;
if($info->params()) {
%params = %{$info->params()};
}
# ...
foreach(keys %params) {
print "$_ => $params{$_}n";
}
my $u = CGI::Untaint->new(%params);
use CGI::Info;
use CGI::IDS;
# ...
my $info = CGI::Info->new();
my $allowed = {
foo => qr/^d*$/, # foo must be a number, or empty
bar => undef, # bar can be given and be any value
xyzzy => qr/^[ws-]+$/, # must be alphanumeric
# to prevent XSS, and non-empty
# as a sanity check
};
my $paramsref = $info->params(allow => $allowed);
# or
my @expected = ('foo', 'bar');
my $paramsref = $info->params({
expect => @expected,
upload_dir = $info->tmpdir()
});
if(defined($paramsref)) {
my $ids = CGI::IDS->new();
$ids->set_scan_keys(scan_keys => 1);
if($ids->detect_attacks(request => $paramsref) > 0) {
die 'horribly';
}
}
Если запрос представляет собой запрос XML (то есть тип контента сообщения - Text/XML), CGI :: Информация поместит запрос в элемент Params 'XML', таким образом:
use CGI::Info;
# ...
my $info = CGI::Info->new();
my $paramsref = $info->params(); # See BUGS below
my $xml = $$paramsref{'XML'};
# ... parse and process the XML request in $xml
Получите один параметр. Принимает дополнительный отдельный параметр, который является аргументом для возврата. Если этот параметр не указан param () является оберткой для params () без аргументов.
use CGI::Info;
# ...
my $info = CGI::Info->new();
my $bar = $info->param('foo');
Если запрашиваемый параметр не в разрешенном списке, будет брошено сообщение об ошибке:
use CGI::Info;
my $allowed = {
foo => qr/d+/
};
my $xyzzy = $info->params(allow => $allowed);
my $bar = $info->param('bar'); # Gives an error message
Возвращает Undef, если запрошенный параметр не был дан
Возвращает логическое, если веб-сайт просматривается на мобильном устройстве, таком как смартфон. Все планшеты являются мобильными, но не все мобильные устройства - это планшеты.
Возвращает логическое, если веб -сайт просматривается на планшете, такой как iPad.
Возвращает параметры как строку, которая полезна для отладки или генерации ключей для кэша.
Возвращает протокол соединения, предположительно, «http» или «https», или Undef, если его нельзя определить.
Возвращает имя каталога, который вы можете использовать для создания временных файлов.
Подпрограмма предпочтительнее «tmpdir» в File :: Spec, поскольку программы CGI часто работают на общих серверах. Сказав это, TMPDIR вернется к файлу :: Spec-> tmpdir (), если он не сможет найти где-то лучше.
Если приведен параметр «по умолчанию», то используйте этот каталог в качестве падения, а не значение в файле :: Spec-> tmpdir (). Никаких тестов на здравомыслие не проведено, поэтому, если вы дадите значение по умолчанию «/не существующего», которое будет возвращено.
TMPDIR позволяет передавать параметры.
use CGI::Info;
my $info = CGI::Info->new();
my $dir = $info->tmpdir(default => '/var/tmp');
$dir = $info->tmpdir({ default => '/var/tmp' });
# or
my $dir = CGI::Info->tmpdir();
Возвращает корень документа. Это предпочтительнее просмотреть Document_Root в среде, потому что он также будет работать, когда мы не работаем как сценарий CGI, который полезен для отладки скрипта.
Это можно запустить как метод класса или объекта.
use CGI::Info;
print CGI::Info->rootdir();
Синоним rootdir (), для совместимости с хи.
Синоним rootdir (), для совместимости с Apache.
Получает и устанавливает название каталога, который вы можете использовать для хранения журналов.
Посетитель - настоящий человек или робот?
use CGI::Info;
my $info = CGI::Info->new();
unless($info->is_robot()) {
# update site visitor statistics
}
Посетитель - поисковая система?
use CGI::Info;
if(CGI::Info->new()->is_search_engine()) {
# display generic information about yourself
} else {
# allow the user to pick and choose something to display
}
Возвращает один из «Web», «Search», «robot» и «Mobile».
# Code to display a different web page for a browser, search engine and
# smartphone
use Template;
use CGI::Info;
my $info = CGI::Info->new();
my $dir = $info->rootdir() . '/templates/' . $info->browser_type();
my $filename = ref($self);
$filename =~ s/::///g;
$filename = "$dir/$filename.tmpl";
if((!-f $filename) || (!-r $filename)) {
die "Can't open $filename";
}
my $template = Template->new();
$template->process($filename, {}) || die $template->error();
Возвращает значение cookie's или Undef, если не указано, или запрошенное cookie нет в банке.
Устроенный - используйте cookie () вместо этого.
use CGI::Info;
my $i = CGI::Info->new();
my $name = $i->get_cookie(cookie_name => 'name');
print "Your name is $namen";
my $address = $i->get_cookie('address');
print "Your address is $addressn";
Возвращает значение cookie's или Undef, если не указано, или запрошенное cookie нет в банке. API такой же, как «Param», он заменит метод «get_cookie» в будущем.
use CGI::Info;
my $name = CGI::Info->new()->cookie('name');
print "Your name is $namen";
Устанавливает или возвращает состояние объекта, 200 для OK, в противном случае код ошибки HTTP
Возвращает предупреждения, которые создал объект
Иногда вы не знаете, что такое регистратор, пока вы не создаете создание класса. Эта функция исправляет ситуацию с Catch22.
Метод класса для сброса класса. Вы должны сделать это в среде FCGI, прежде чем испытывать экземпляр, но нигде больше.
Найджел Хорн, <njh at bandsman.co.uk>
is_tablet () только в настоящее время обнаруживает ПК iPad и Windows. Строки Android не различаются между планшетами и смартфонами.
Пожалуйста, сообщите о любых ошибках или запросах функций bug-cgi-info at rt.cpan.org или через веб-интерфейс по адресу http://rt.cpan.org/noauth/reportbug.html?queue=cgi-info. Я буду уведомлен, и тогда вы автоматически будете уведомлены о прогрессе в вашей ошибке, поскольку я вношу изменения.
Params () возвращает ссылку, что означает, что вызывные подпрограммы могут изменить хэш для других подпрограмм. Возьмите местную копию, прежде чем внести поправки к столу, если вы не хотите, чтобы неожиданные вещи произошли.
Http :: browserdetect, https://github.com/mitchellkrogza/apache-ultimate-bad-bot blocker
Вы можете найти документацию для этого модуля с командой Perldoc.
perldoc CGI::Info
Вы также можете искать информацию по адресу:
Metacpan
https://metacpan.org/dist/cgi-info
RT: трекер запросов CPAN
https://rt.cpan.org/noauth/bugs.html?dist=cgi-info
Матрица тестеров CPAN
http://matrix.cpantesters.org/?dist=cgi-info
CPAN -тестеры зависимости
http://deps.cpantesters.org/?module=cgi::Info
Copyright 2010-2024 Найджел Хорн.
Эта программа выпущена по следующей лицензии: GPL2