Los CGI (Common Gateway Interface) son programas que se ejecutan en el servidor y permiten que se genere una página web de forma dinámica.
Sí, siempre que se cumpla:
Tenga en cuenta que el funcionamiento de sus propios CGIs es cuestión suya y no está incluído en el soporte técnico de los servidores.
Los CGI no pueden ser colocados en cualquier directorio y esperar que funcionen. Un CGI ha de estar en un directorio que tenga permisos de ejecución de scripts, si se trata de un script en Perl, o de ejecución de archivos exe (que incluye scripts) si se trata de un ejecutable.
El directorio cgi-bin al crearse y notificar la intencion de uso de cgi a [email protected] se le dispone de permisos de ejecución y se eliminan los permisos de lectura y listado para proteger mejor los fuentes. Normalmente colocará ahí sus propios CGI.
Si estos CGI han de escribir en algun fichero este ha de tener permisos de escritura. Por ello deberá solicitar a [email protected] que le asigne este permiso de escritura en los directorios que desee.
Por motivos de seguridad no es aconsejable que el directorio cgi-bin tenga permiso de escritura por lo que no debe crear CGI que escriban en el. Dirija sus escrituras contra un directorio de datos fuera de cgi-bin.
De todas formas, hay CGI disponibles freeware en Internet que escriben en archivos que se encuentran en el mismo directorio del Script. Esta es una práctica poco recomendable. Para que estos CGI funcionen es necesario que al directorio en el que se encuentran se le asignen permisos de ejecución y de escritura simultáneamente. Y esto constituye un importante agujero de seguridad para su sitio web.
Sí, se trata de CGI.pm. Facilita muchísimo las tareas de la programación de CGIs. La documentación la puede encontrar http://www.genome.wi.mit.edu/ftp/pub/software/WWW/cgi_docs.html.
Nuestros servidores funcionan sobre el sistema operativo Windows NT. Una de las ventajas del Perl es que al ser interpretado es muy portable. Sin embargo no lo es del todo. Hay funciones de la biblioteca estándar que sólo existen en sistemas Unix y no en Windows NT.
Debe tener esto en cuenta y que no se puede garantizar que los scripts en Perl que encuentre en Intenet vayan a funcionar sin cambios en Windows NT. Hay algunos que sí, pero normalmente es porque están diseñados con idea de portabilidad desde el principio.
Además, los CGI de terceros casi siempre requieren una adaptación previa (customize) para que funcionen. El motivo es que suelen depender de parámetros como rutas de directorios, nombres de archivos, etc. Por suerte, la zona de customización suele estar clara en la mayoría de los scripts y consiste simplemente en cambiar valores de ciertas variables.
La versión de Perl for Win32 de que disponemos es la de ActiveState y procuramos que esté actualizada.
Tenga en cuenta los siguientes puntos si piensa utilizar scripts en Perl que están escritos para Unix:
print "HTTP/1.0 200 OK\n"; print "Content-type: text/html\n\n";
El módulo de biblioteca CGI.pm resuelve estos problemas de forma elegante (Vea más adelante).
La utilidad FreeWare Blat.exe es un programa que envía correo electrónico y que funciona con opciones desde la línea de comandos, por lo que es ideal para ser utilizado desde scripts.
El modo de funcionamiento es básicamente el siguiente:
Las opciones completas de blat son las siguientes:
Blat <filename> -t <recipient> [optional switches (see below)] Blat -install <server addr> <sender's addr> [<try>[<port>[<profile>]]] [-q] Blat -profile [-delete | "<default>"] [profile1] [profileN] [-q] Blat -h [-q] -install <server addr> <sender's addr> [<try n times> [<port> [<profile>]]] : set's SMTP server, sender, number of tries and port for profile (<try n times> and <port> may be replaced by '-'). <filename> : file with the message body ('-' for console input, end with ^Z) -t <recipient> : recipient list (comma separated) -s <subj> : subject line -f <sender> : overrides the default sender address (must be known to server) -i <addr> : a 'From:' address, not necessarily known to the SMTP server. -c <recipient> : carbon copy recipient list (comma separated) -b <recipient> : blind carbon copy recipient list (comma separated) -o <organization>: Organization field -h : displays this help. -q : supresses *all* output. -noh : prevent X-Mailer header from showing homepage of blat -noh2 : prevent X-Mailer header entirely -p <profile> : send with SMTP server, user and port defined in <profile>. -server <addr> : Specify SMTP server to be used. (optionally, addr:port) -port <port> : port to be used on the server, defaults to SMTP (25) -hostname <hst>: select the hostname used to send the message -mime : MIME Quoted-Printable Content-Transfer-Encoding. -uuencode : Send (binary) file UUEncoded -base64 : Send (binary) file using base64 (binary Mime) -try <n times> : how many time blat should try to send. from '1' to 'INFINITE' -attach <file> : attach binary file to message (may be repeated) -attacht <file>: attach text file to message (may be repeated) Note that if the '-i' option is used, <sender> is included in 'Reply-to:' and 'Sender:' fields in the header of the message.
La URL que mantiene actualmente el programa es http://www.interlog.com/~tcharron/blat.html
Se trata de un módulo orientado a objetos de enorme utilidad si uno piensa dedicarse al desarrollo de CGIs en Perl. Básicamente sustituye con ventaja a la biblioteca cgi-lib.
Como está disponible en la biblioteca, no es necesario colocar el módulo en el servidor. Se puede usar directamente mediante una sentencia use. Lo que sí es imprescindible es estudiar la documentación. Puede encontrar todo lo referente a esta biblioteca en http://stein.cshl.org/WWW/software/CGI/cgi_docs.html.
Ejemplo de uso
use CGI qw(:standard :nph); |
Aquí se incluye el módulo en la forma nph |
$query = new CGI; |
creamos un objeto CGI |
print $query->header; |
Esto envía las cabeceras adecuadas |
print $query->start_html(); |
Esto envía los tags HTML hasta el <body> incluido. |
print "<h1>Hola amigos</h1>"; |
Esto se muestra en la página web |
print $query->end_html(); |
Muestra el </body> y el </html>. |
Usted no tiene acceso al código de dichos CGI, aunque sí puede usarlos a través de su URL. En el panel de control encontrará asistentes gráficos que le permiten generar cómodamente el código HTML tanto de contadores como de formularios
Se trata de una adaptación del CGI de dominio público FormMail disponible en http://www.worldwidemart.com/scripts con los siguientes cambios y mejoras:
En la marca FORM del formulario hay que poner lo siguiente:
<form action="http://cgi.adso.net/FormMail.pl">
Los parámetros del formulario se introducen mediante campos ocultos (tags tipo hidden). Los campos ocultos y la información que suminitran es la siguiente:
Además, si se introduce en el formulario un campo cuyo nombre sea email, los mensajes de correo procederán del valor de dicha variable. En otras palabras, si en el formulario sus usuarios han de poner su dirección de correo, llame a dicho campo email para que los mensajes que reciba provengan de la dirección de correo de los usuarios y se puedan contestar fácilmente.
La validación se realiza basándose en los nombres de los campos. Para las cuentas bancarias, los nombres deben ser:
Si existen campos con los nombres anteriores, el CGI verificará la validez algorítmica de la cuenta y dará un error si no es correcta.
Para las tarjetas de crédito los campos deben ser:
El CGI valida que el número corresponda al tipo de tarjeta especificado y que sea algorítmicamente correcto.
Si utiliza FrontPage para crear sus páginas, puede utilizar el CGI de formularios mediante el cuadro de diálogo de Propiedades de Formulario.
Pulse con el botón derecho del ratón sobre el formulario y escoja la opción Propiedades de Formulario. Después elija enviar a secuencia de comandos CGI personalizada. Haga click en opciones y en el campo Accion escriba la dirección web del CGI: cgi.adso.net/FormMail.pl . Como método escoja POST.
Con esto el CGI recibirá los datos del formulario, pero no funcionará a menos que especifique las variables nombradas anteriormente mediante campos ocultos (type=hidden). Vaya a la ventana de código HTML y después de la marca FORM introduzca las marcas correspondientes a los campos ocultos que se menciona en el párrafo anterior de uso con HTML.
Naturalmente, la alternativa para los desarrolladores de FrontPage es utilizar las extensiones de FrontPage para enviar los datos del formulario bien a una dirección de correo o bien a un archivo.
Puede ver un ejemplo operativo en http:www.adso.net/servicios/sugerencias.htm.
Para cualquier duda no dejen de consultar a [email protected]