- - - - -
CGI :: Información - Información sobre el entorno CGI
Versión 0.86
Con demasiada frecuencia, los programas Perl tienen información, como el nombre del script, codificado en su fuente. En términos generales, la codificación dura es un mal estilo, ya que puede dificultar la lectura de los programas y reduce la legibilidad y la portabilidad. CGI :: Información intenta eliminar eso.
Además, para ayudar a la depuración de script, CGI :: Info intenta hacer cosas sensatas cuando no está ejecutando el programa en un entorno CGI.
CGI :: Info también proporciona un firewall de aplicación web simple. Si bien no debe confiar en él solo para proporcionar seguridad a su sitio web, es otra capa y cada pequeño ayuda.
use CGI::Info;
my $info = CGI::Info->new();
# ...
Crea un objeto CGI :: Info.
Se necesitan cuatro argumentos opcionales que permitan, logger, espere y upload_dir, que se documentan en el método params ().
Toma un parámetro opcional syslog para registrar mensajes en sys :: syslog. Puede ser un booleano para habilitar/deshabilitar la sesión de registro para syslog, o una referencia a un hash que se dará a sys :: syslog :: setlogsock.
Toma el registrador de parámetros opcional, un objeto que se utiliza para advertencias
Toma la memoria caché de parámetros opcional, un objeto que se usa para almacenar en caché las búsquedas IP. Este objeto de caché es un objeto que entiende los mensajes get () y establecer (), como un objeto chi.
Toma el parámetro opcional max_upload, que es el tamaño máximo de archivo que puede cargar (-1 para no límite), el valor predeterminado es 512MB.
Devuelve el nombre del script CGI. Esto es útil para publicar, evitando así poner caminos codificados en formas
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";
Encuentra el nombre de ruta completo del script.
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];
}
Devuelve el directorio del sistema de archivos que contiene el script.
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';
Devuelva el nombre de host del servidor web actual, según CGI. Si el nombre no se puede determinar desde el servidor web, el nombre de host del sistema se usa como una caída. Esto puede no ser lo mismo que la máquina en la que se está ejecutando el script CGI, algunos ISP y otros sitios ejecutan scripts en diferentes máquinas de aquellos que entregan contenido estático. Hay una buena posibilidad de que esto sea dominio_name () prepuesto con 'www' o '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 es el nombre del dominio de control para este sitio web. Por lo general, será similar a host_name, pero carecerá de los prefijos http: // o www.
Devuelva la URL de la máquina ejecutando el script CGI.
Devuelve una referencia a una lista hash de los argumentos CGI.
CGI :: Info le ayuda a probar su script antes de la implementación en un sitio web: si no está en un entorno CGI (por ejemplo, el script se está probando desde la línea de comandos), se utilizan los argumentos de línea de comandos del programa (una lista de pares de valor clave = valores), si no hay argumentos de la línea de comandos, entonces se leen desde Stdin como una lista de líneas de valor clave = de valor. También puede dar uno de--Tablet, --Earch-Engine, --mobile y--robot para imitar a esos agentes. Por ejemplo:
./script.cgi --mobile name=Nigel
Devuelve Undef si los parámetros no se pueden determinar o si no se dieron ninguno.
Si se da un argumento dos veces o más, los valores se colocan en una cadena separada por comas.
El valor hash devuelto se puede pasar a CGI :: Untaint.
Toma cuatro parámetros opcionales: permitir, esperar, logger y upload_dir. Los parámetros se pasan en un hash, o una referencia a un hash. Este último es más eficiente ya que pone menos en la pila.
Permitir es una referencia a una lista hash de parámetros CGI que permitirá. El valor para cada entrada es una expresión regular de valores permitidos para la clave. Un valor undef significa que se permitirá cualquier valor. Los argumentos que no están en la lista se ignoran en silencio. Esto es útil para ayudar a bloquear los ataques en su sitio.
Espere es una referencia a una lista de argumentos que espera ver y transmitir. Los argumentos que no están en la lista se ignoran en silencio. Esto es útil para ayudar a bloquear los ataques en su sitio. Su uso está en desuso, use Permitir en su lugar. Se espera que se eliminará en una versión posterior.
Upload_dir es una cadena que contiene un directorio donde los archivos que se están cargando se almacenarán.
Toma un registrador de parámetros opcional, un objeto que se utiliza para advertencias y trazas. Este objeto Logger es un objeto que entiende los mensajes Warn () y Trace (), como un log :: log4perl o log :: cualquier objeto.
Los argumentos Permitir, Expect, Logger y Subload_dir también se pueden pasar al constructor.
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';
}
}
Si la solicitud es una solicitud XML (es decir, el tipo de contenido de la publicación es Text/XML), CGI :: Info pondrá la solicitud en el elemento Params 'XML', por lo tanto::
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
Obtenga un solo parámetro. Toma un parámetro de cadena única opcional que es el argumento para devolver. Si ese parámetro no se da parámetro () es un envoltorio a params () sin argumentos.
use CGI::Info;
# ...
my $info = CGI::Info->new();
my $bar = $info->param('foo');
Si el parámetro solicitado no está en la lista permitida, se lanzará un mensaje de error:
use CGI::Info;
my $allowed = {
foo => qr/d+/
};
my $xyzzy = $info->params(allow => $allowed);
my $bar = $info->param('bar'); # Gives an error message
Devuelve undef si no se dio el parámetro solicitado
Devuelve un booleano si el sitio web se ve en un dispositivo móvil, como un teléfono inteligente. Todas las tabletas son móviles, pero no todos los dispositivos móviles son tabletas.
Devuelve un booleano si el sitio web se ve en una tableta como un iPad.
Devuelve los parámetros como una cadena, que es útil para depurar o generar claves para un caché.
Devuelve el protocolo de conexión, presumiblemente 'http' o 'https', o undef si no se puede determinar.
Devuelve el nombre de un directorio que puede usar para crear archivos temporales.
La rutina es preferible a "TMPDIR" en el archivo :: Spec, ya que los programas CGI a menudo se ejecutan en servidores compartidos. Dicho esto, TMPDIR volverá a presentar :: Spec-> tmpdir () si no puede encontrar en algún lugar mejor.
Si se da el parámetro 'predeterminado', use ese directorio como un retroceso en lugar del valor en el archivo :: spec-> tmpdir (). No se realizan pruebas de cordura, por lo que si da el valor predeterminado de '/inexistente', se devolverá.
TMPDIR permite que se pasen una referencia de las opciones.
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();
Devuelve la raíz del documento. Esto es preferible a mirar document_root en el entorno porque también funcionará cuando no nos ejecutemos como un script CGI, que es útil para la depuración de script.
Esto se puede ejecutar como un método de clase u objeto.
use CGI::Info;
print CGI::Info->rootdir();
Sinónimo de rootdir (), para compatibilidad con chi.
Sinónimo de rootDir (), para compatibilidad con Apache.
Obtiene y establece el nombre de un directorio que puede usar para almacenar registros.
¿El visitante es una persona real o un robot?
use CGI::Info;
my $info = CGI::Info->new();
unless($info->is_robot()) {
# update site visitor statistics
}
¿El visitante es un motor de búsqueda?
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
}
Devuelve uno de 'web', 'búsqueda', 'robot' y 'móvil'.
# 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();
Devuelve el valor de una cookie, o ungrano si no se da nombre, o la cookie solicitada no está en el frasco.
Deprecido: use cookie () en su lugar.
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";
Devuelve el valor de una cookie, o ungrano si no se da nombre, o la cookie solicitada no está en el frasco. La API es la misma que "Param", reemplazará el método "get_cookie" en el futuro.
use CGI::Info;
my $name = CGI::Info->new()->cookie('name');
print "Your name is $namen";
Establece o devuelve el estado del objeto, 200 para OK, de lo contrario, un código de error HTTP
Devuelve las advertencias que ha generado el objeto
A veces no sabes qué es el registrador hasta que hayas instanciado la clase. Esta función fija la situación Catch22.
Método de clase para restablecer la clase. Debe hacer esto en un entorno FCGI antes de instancias de instancias, pero en ningún otro lugar.
Nigel Horne, <njh at bandsman.co.uk>
IS_Tablet () solo detecta actualmente las PC iPad y Windows. Las cadenas de Android no difieren entre tabletas y teléfonos inteligentes.
Informe cualquier solicitud de errores o funciones a bug-cgi-info at rt.cpan.org , o a través de la interfaz web en http://rt.cpan.org/noauth/reportbug.html?queue=cgi-info. Me notificarán, y luego se notificará automáticamente el progreso en su error a medida que realice cambios.
Params () Devuelve una ref, lo que significa que las rutinas de llamar pueden cambiar el hash para otras rutinas. Tome una copia local antes de hacer enmiendas a la mesa si no desea que sucedan cosas inesperadas.
Http :: browserDetect, https://github.com/mitchellkrogza/apache-ultimate-bad-bot-bloqueador
Puede encontrar documentación para este módulo con el comando PERLDOC.
perldoc CGI::Info
También puede buscar información en:
Metacpan
https://metacpan.org/dist/cgi-info
RT: rastreador de solicitud de CPAN
https://rt.cpan.org/noauth/bugs.html?dist=cgi-info
Matriz de probadores de CPAN
http://matrix.cpantesters.org/?dist=cgi-info
Dependencias de los probadores de CPAN
http://deps.cpantesters.org/?module=cgi::info
Copyright 2010-2024 Nigel Horne.
Este programa se publica bajo la siguiente licencia: GPL2