¿Qué es el CGI?
Actualmente, NCSA mantiene CGI, que define CGI de la siguiente manera:
CGI (Common Gateway Interface), Common Gateway Interface, es un programa que se ejecuta en un servidor como un servidor HTTP y proporciona una interfaz con la página HTML del cliente.
navegación web
Para comprender mejor cómo funciona CGI, podemos comenzar con el proceso de hacer clic en un enlace o URL en una página web:
1. Utilice su navegador para acceder a la URL y conectarse al servidor web HTTP.
2. Después de recibir la información de la solicitud, el servidor web analizará la URL y verificará si el archivo accedido existe en el servidor. Si el archivo existe, devolverá el contenido del archivo; de lo contrario, devolverá un mensaje de error.
3. El navegador recibe información del servidor y muestra el archivo recibido o el mensaje de error.
Los programas CGI pueden ser scripts Python, scripts PERL, scripts SHELL, programas C o C++, etc.
diagrama de arquitectura CGI
Soporte y configuración del servidor web.
Antes de realizar la programación CGI, asegúrese de que su servidor web admita CGI y haya configurado un controlador CGI.
Apache admite la configuración CGI:
Configure el directorio CGI:
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
Todos los programas CGI de ejecución del servidor HTTP se guardan en un directorio preconfigurado. Este directorio se denomina directorio CGI y, por convención, se denomina /var/www/cgi-bin.
Los archivos CGI tienen una extensión .cgi y Perl también puede usar una extensión .pl.
De forma predeterminada, la configuración del servidor Linux se ejecuta en el directorio cgi-bin en /var/www.
Si desea especificar otro directorio para ejecutar scripts CGI, puede modificar el archivo de configuración httpd.conf de la siguiente manera:
<Directorio "/var/www/cgi-bin"> AllowOverride Ninguna Opciones +ExecCGI Orden permitir,denegar Permitir de todos</Directory>
Agregue el sufijo .pl a AddHandler para que podamos acceder a los archivos de script Perl que terminan en .pl:
AddHandler cgi-script .cgi .pl .py
El primer programa CGI
A continuación creamos un archivo test.cgi, el código es el siguiente:
código prueba.cgi
#!/usr/bin/perl imprimir " Tipo de contenido: texto/html r n r n " ; ' <html> ' ; imprimir ' <cabeza> ' ; imprimir ' <meta charset="utf-8"> ' ; imprimir ' <title>Tutorial de Coder (codercto.com) </title> ' ; ' </head> ' ; imprimir ' <cuerpo> ' ; imprimir ' <h2>¡Hola Palabra! </h2> ' ; ' <p>El primer programa CGI del Tutorial del programador. </p> ' ; imprimir ' </cuerpo> ' ; imprimir ' </html> ' ; 1 ; Luego abra http://localhost/cgi-bin/test.cgi a través del navegador, los resultados de salida son los siguientes:
El contenido de salida de la primera línea del script "Tipo de contenido: texto/htmlrnrn" se envía al navegador y le indica que el tipo de contenido mostrado es "texto/html".
encabezado HTTP
El "tipo de contenido: texto/html" en el contenido del archivo test.cgi es parte del encabezado HTTP, que se envía al navegador para indicarle el tipo de contenido del archivo.
El formato del encabezado HTTP es el siguiente:
Nombre del campo HTTP: contenido del campo
Por ejemplo:
Tipo de contenido:text/htmlrnrn
La siguiente tabla presenta información comúnmente utilizada en encabezados HTTP en programas CGI:
cabeza | describir |
---|
Tipo de contenido: | La información MIME solicitada correspondiente a la entidad. Por ejemplo: tipo de contenido: texto/html |
Vence: Fecha | Fecha y hora de vencimiento de la respuesta |
Ubicación: URL | Se utiliza para redirigir al destinatario a la ubicación de una URL no solicitada para completar la solicitud o identificar un nuevo recurso. |
Última modificación: Fecha | La hora de la última modificación del recurso solicitado. |
Longitud del contenido: N | Longitud del contenido solicitado |
Set-Cookie: Cadena | Establecer cookies HTTP |
variables de entorno CGI
Todos los programas CGI reciben las siguientes variables de entorno, que juegan un papel importante en los programas CGI:
nombre de la variable | describir |
---|
CONTENIDO_TIPO | El valor de esta variable de entorno indica el tipo MIME de la información que se pasa. Actualmente, la variable de entorno CONTENT_TYPE es generalmente: aplicación/x-www-form-urlencoded, lo que indica que los datos provienen de formularios HTML. |
CONTENIDO_LENGTH | Si el método de transferencia de información entre el servidor y el programa CGI es POST, esta variable de entorno es el número de bytes de datos válidos que se pueden leer desde la entrada estándar STDIN. Esta variable de entorno debe usarse al leer los datos ingresados. |
HTTP_COOKIE | Contenido de la COOKIE en el cliente. |
HTTP_USER_AGENT | Proporcionar información del navegador del cliente, incluidos números de versión u otros datos de propiedad exclusiva. |
RUTA_INFO | El valor de esta variable de entorno representa otra información de ruta inmediatamente después del nombre del programa CGI. A menudo aparece como un parámetro en los programas CGI. |
QUERY_STRING | Si el método de transferencia de información entre el servidor y el programa CGI es GET, el valor de esta variable de entorno es la información transferida. Esta información sigue al nombre del programa CGI, separada por un signo de interrogación '?'. |
REMOTE_ADDR | El valor de esta variable de entorno es la dirección IP del cliente que envía la solicitud, como 192.168.1.67 arriba. Este valor siempre está presente. Y es el identificador único que el cliente web debe proporcionar al servidor web, que puede usarse en programas CGI para distinguir diferentes clientes web. |
HOST_REMOTO | El valor de esta variable de entorno contiene el nombre de host del cliente que envió la solicitud CGI. Si la consulta que desea realizar no es compatible, no es necesario definir esta variable de entorno. |
SOLICITUD_METHOD | Proporciona el método mediante el cual se llama al script. Para scripts que utilizan el protocolo HTTP/1.0, sólo GET y POST son significativos. |
SCRIPT_FILENAME | Ruta completa al script CGI |
SCRIPT_NOMBRE | El nombre del script CGI. |
SERVIDOR_NOMBRE | Este es el nombre de host, alias o dirección IP de su servidor WEB. |
SERVIDOR_SOFTWARE | El valor de esta variable de entorno contiene el nombre y el número de versión del servidor HTTP que llama al programa CGI. Por ejemplo, el valor anterior es Apache/2.2.14(Unix) |
El siguiente es un script CGI simple que genera variables de entorno CGI:
Ejemplo
#!/usr/bin/perl imprimir " Tipo de contenido: texto/html n n " ; ' <meta charset="utf-8"> ' ; imprimir " <font size=+1>Variable de entorno:</font> n " ; ( clasificar llaves %ENV ) { imprimir " <b> $_ </b>: $ENV { $_ } <br> n " ; 1 ; Descarga de archivos
Si queremos descargar archivos a través de Perl CGI, debemos configurar información de encabezado diferente, como se muestra a continuación:
Ejemplo
#!/usr/bin/perl # encabezado HTTP imprimir " Tipo de contenido: aplicación/flujo de octeto; nombre = " Nombre de archivo " r n " ; " Disposición de contenido: archivo adjunto; nombre de archivo = " Nombre de archivo " r n n " # El contenido real del archivo se escuchará. abierto ( ARCHIVO , " <Nombre de archivo " ) ; mientras ( leer ( ARCHIVO , $buffer , 100 ) ) { imprimir ( " $ búfer " ) ; Transferir datos usando el método GET
El método GET envía la información del usuario codificada al servidor. La información de datos se incluye en la URL de la página solicitada, separada por "?", como se muestra a continuación:
http://www.test.com/cgi-bin/test.cgi?key1=value1&key2=value2
Algunas notas adicionales sobre las solicitudes GET:
Las solicitudes GET se pueden almacenar en caché
Las solicitudes GET permanecen en el historial del navegador
Las solicitudes GET se pueden marcar como favoritas
Las solicitudes GET no deben usarse cuando se manejan datos confidenciales
Las solicitudes GET tienen límites de longitud
Las solicitudes GET solo deben usarse para recuperar datos
Ejemplo de URL simple: método GET
La siguiente es una URL simple que utiliza el método GET para enviar dos parámetros al programa test.cgi:
/cgi-bin/test.cgi?name=Coder Tutorial&url=http://www.codercto.com
El siguiente es el código del archivo test.cgi:
Ejemplo
#!/usr/bin/perl local ( $buffer , @pairs , $pair , $name , $value , %FORM ) ; # Leer información de texto ;
$ENV { ' REQUEST_METHOD ' } =~ tr / a - z / A - Z / ; ( $ENV { ' REQUEST_METHOD ' } ecuación " CONSEGUIR " ) { $ búfer = $ENV { ' QUERY_STRING ' } ; # Leer información del par nombre/valor @pairs = dividir ( /&/, $ buffer ) ; $par ( @pares ) { ( $nombre , $valor ) = dividir ( /=/, $par ) ; $valor =~ tr /+/ / ; $valor =~ s / % ( .. ) / paquete ( " C " , hexadecimal ( $1 ) ) / por ejemplo ; $FORMA { $ nombre } = $valor } $nombre = $FORMULARIO { nombre } ; $url = $ FORMULARIO { url } ; " Tipo de contenido: texto/html r n r n " ; " <html> " ; imprimir " <cabeza> " ; imprimir ' <meta charset="utf-8"> ' ; imprimir ' <title>Tutorial de Coder (codercto.com) </title> ' ; " </head> " ; imprimir " <cuerpo> " ; imprimir " <h2> $nombre URL: $ url </h2> " ; " </cuerpo> " ; imprimir " </html> " ; 1 ; Verifique el navegador y el resultado es el siguiente:
Ejemplo de forma simple: método GET
El siguiente es un formulario HTML que utiliza el método GET para enviar dos datos al servidor. El script del servidor enviado también es el archivo test.cgi. El código test.html es el siguiente.
código del archivo test.html
< ! HTML > <html> <cabeza> < meta conjunto de caracteres = " utf-8 " > <título> Tutorial de codificación ( codercto.com ) </título> </cabeza> <cuerpo> < formulario acción = " /cgi-bin/test.cgi " método = " get " > nombre del sitio: < entrada tipo = " texto " nombre = " nombre " > < br /> URL del sitio: < entrada tipo = " texto " nombre = " url " /> < entrada tipo = " enviar " valor = " enviar " /> </formulario> </cuerpo> </html> En el navegador, el efecto de ejecución es el siguiente:
Pasar datos usando el método POST
Es más seguro y confiable utilizar el método POST para transmitir datos al servidor. Parte de la información confidencial, como las contraseñas de los usuarios, debe utilizar POST para transmitir datos.
El siguiente también es test.cgi, que también puede manejar datos del formulario POST enviados por el navegador:
código prueba.cgi
#!/usr/bin/perl local ( $buffer , @pairs , $pair , $name , $value , %FORM ) ; # Leer información de texto ;
$ENV { ' REQUEST_METHOD ' } =~ tr / a - z / A - Z / ; ( $ENV { ' REQUEST_METHOD ' } ecuación " CORREO " ) { leer ( STDIN , $ buffer , $ ENV { ' CONTENT_LENGTH ' } ) ; { $ búfer = $ENV { ' QUERY_STRING ' } ; # Leer información del par nombre/valor @pairs = dividir ( /&/, $ buffer ) ; $par ( @pares ) { ( $nombre , $valor ) = dividir ( /=/, $par ) ; $valor =~ tr /+/ / ; $valor =~ s / % ( .. ) / paquete ( " C " , hexadecimal ( $1 ) ) / por ejemplo ; $FORMA { $ nombre } = $valor } $nombre = $FORMULARIO { nombre } ; $url = $ FORMULARIO { url } ; " Tipo de contenido: texto/html r n r n " ; " <html> " ; imprimir " <cabeza> " ; imprimir ' <meta charset="utf-8"> ' ; imprimir ' <title>Tutorial de Coder (codercto.com) </title> ' ; " </head> " ; imprimir " <cuerpo> " ; imprimir " <h2> $nombre URL: $ url </h2> " ; " </cuerpo> " ; imprimir " </html> " ; 1 ; El siguiente es un formulario HTML que utiliza el método GET para enviar dos datos al servidor. El script del servidor enviado también es el archivo test.cgi. El código test.html es el siguiente.
código prueba.html
< ! HTML > <html> <cabeza> < meta conjunto de caracteres = " utf-8 " > <título> Tutorial de codificación ( codercto.com ) </título> </cabeza> <cuerpo> < formulario acción = " /cgi-bin/test.cgi " método = " publicación " > Nombre del sitio: < entrada tipo = " texto " nombre = " nombre " > < br /> URL del sitio: < entrada tipo = " texto " nombre = " url " /> < entrada tipo = " enviar " valor = " enviar " /> </formulario> </cuerpo> </html> En el navegador, el efecto de ejecución es el siguiente:
Pasar datos de casilla de verificación a través del programa CGI
La casilla de verificación se utiliza para enviar uno o más datos de opciones. El código test.html es el siguiente:
código prueba.html
< ! HTML > <html> <cabeza> < meta conjunto de caracteres = " utf-8 " > <título> Tutorial del codificador ( codercto.com ) </título> </cabeza> <cuerpo> < formulario acción = " /cgi-bin/test.cgi " método = " PUBLICAR " objetivo = " _en blanco " > < entrada tipo = " casilla de verificación " nombre = " codificador " valor = " en " /> Tutorial del codificador < entrada tipo = " casilla de verificación " nombre = " google " valor = " en " /> Google < entrada tipo = " enviar " valor = " Seleccionar sitio " /> </formulario> </cuerpo> </html> El siguiente es el código del archivo test.cgi:
código prueba.cgi
#!/usr/bin/perl local ( $buffer , @pairs , $pair , $name , $value , %FORM ) # Leer información ; $ENV { ' REQUEST_METHOD ' } =~ tr / a - z / A - Z / ; ( $ENV { ' REQUEST_METHOD ' } ecuación " CORREO " ) { leer ( STDIN , $ buffer , $ ENV { ' CONTENT_LENGTH ' } ) ; { $ búfer = $ENV { ' QUERY_STRING ' } ; # Leer información del par nombre/valor @pairs = dividir ( /&/, $ buffer ) ; $par ( @pares ) { ( $nombre , $valor ) = dividir ( /=/, $par ) ; $valor =~ tr /+/ / ; $valor =~ s / % ( .. ) / paquete ( " C " , hexadecimal ( $1 ) ) / por ejemplo ; $FORMA { $ nombre } = $valor } si ( $FORM { codificadorcto } ) { $ codercto_flag = " ENCENDIDO " } más { $ codercto_flag = " APAGADO " ; si ( $FORMULARIO { google } ) { $ google_flag = " ACTIVADO " ; $ google_flag = " DESACTIVADO " ; imprimir " Tipo de contenido: texto/html r n r n " ; " <html> " ; imprimir " <cabeza> " ; imprimir ' <meta charset="utf-8"> ' ; imprimir ' <title>Tutorial de Coder (codercto.com) </title> ' ; " </head> " ; imprimir " <cuerpo> " ; imprimir " <h2> Estado seleccionado del Tutorial de Coder: $ codercto_flag </h2> " ; " <h2> Estado de selección de Google: $ google_flag </h2> " ; " </cuerpo> " ; imprimir " </html> " ; 1 ; En el navegador, el efecto de ejecución es el siguiente:
Pasar datos de radio a través del programa CGI
La radio solo pasa un dato al servidor. El código test.html es el siguiente:
código prueba.html
< ! HTML > <html> <cabeza> < meta conjunto de caracteres = " utf-8 " > <título> Tutorial del codificador ( codercto.com ) </título> </cabeza> <cuerpo> < formulario acción = " /cgi-bin/test.cgi " método = " publicar " objetivo = " _en blanco " > < entrada tipo = " radio " nombre = " sitio " valor = " codificador " /> Tutorial del codificador < entrada tipo = " radio " nombre = " sitio " valor = " google " /> Google < entrada tipo = " enviar " valor = " enviar " /> </formulario> </cuerpo> </html> El código del script test.cgi es el siguiente:
código prueba.cgi
#!/usr/bin/perl local ( $buffer , @pairs , $pair , $name , $value , %FORM ) # Leer información ; $ENV { ' REQUEST_METHOD ' } =~ tr / a - z / A - Z / ; ( $ENV { ' REQUEST_METHOD ' } ecuación " CORREO " ) { leer ( STDIN , $ buffer , $ ENV { ' CONTENT_LENGTH ' } ) ; { $ búfer = $ENV { ' QUERY_STRING ' } ; # Leer información del par nombre/valor @pairs = dividir ( /&/, $ buffer ) ; $par ( @pares ) { ( $nombre , $valor ) = dividir ( /=/, $par ) ; $valor =~ tr /+/ / ; $valor =~ s / % ( .. ) / paquete ( " C " , hexadecimal ( $1 ) ) / por ejemplo ; $FORMA { $ nombre } = $valor } $sitio = $ FORMULARIO { sitio } ; " Tipo de contenido: texto/html r n r n " ; " <html> " ; imprimir " <cabeza> " ; imprimir ' <meta charset="utf-8"> ' ; imprimir ' <title>Tutorial de Coder (codercto.com) </title> ' ; " </head> " ; imprimir " <cuerpo> " ; imprimir " <h2> Sitio web seleccionado $ sitio </h2> " ; " </cuerpo> " ; imprimir " </html> " ; 1 ; En el navegador, el efecto de ejecución es el siguiente:
Pasar datos de Textarea a través del programa CGI
Textarea transmite varias líneas de datos al servidor. El código test.html es el siguiente:
código prueba.html
< ! HTML > <html> <cabeza> < meta conjunto de caracteres = " utf-8 " > <título> Tutorial del codificador ( codercto.com ) </título> </cabeza> <cuerpo> < formulario acción = " /cgi-bin/test.cgi " método = " publicar " objetivo = " _en blanco " > < área de texto nombre = " contenido de texto " columnas = " 40 " filas = " 4 " > Ingrese el contenido aquí... </ textarea > < entrada tipo = " enviar " valor = " enviar " /> </formulario> </cuerpo> </html> El código del script test.cgi es el siguiente:
código prueba.cgi
#!/usr/bin/perl local ( $buffer , @pairs , $pair , $name , $value , %FORM ) # Leer información ; $ENV { ' REQUEST_METHOD ' } =~ tr / a - z / A - Z / ; ( $ENV { ' REQUEST_METHOD ' } ecuación " CORREO " ) { leer ( STDIN , $ buffer , $ ENV { ' CONTENT_LENGTH ' } ) ; { $ búfer = $ENV { ' QUERY_STRING ' } ; # Leer información del par nombre/valor @pairs = dividir ( /&/, $ buffer ) ; $par ( @pares ) { ( $nombre , $valor ) = dividir ( /=/, $par ) ; $valor =~ tr /+/ / ; $valor =~ s / % ( .. ) / paquete ( " C " , hexadecimal ( $1 ) ) / por ejemplo ; $FORMA { $ nombre } = $valor } $text_content = $FORM { textcontent } ; imprimir " Tipo de contenido: texto/html r n r n " ; " <html> " ; imprimir " <cabeza> " ; imprimir ' <meta charset="utf-8"> ' ; imprimir ' <title>Tutorial de Coder (codercto.com) </title> ' ; " </head> " ; " <cuerpo> " ; imprimir " <h2>
El contenido del texto de entrada es: $text_content </h2> " ; " </cuerpo> " ; imprimir " </html> " ; 1 ; En el navegador, el efecto de ejecución es el siguiente:
Pasar datos desplegables a través del programa CGI
El código del cuadro desplegable HTML es el siguiente:
código prueba.html
< ! HTML > <html> <cabeza> < meta conjunto de caracteres = " utf-8 " > <título> Tutorial del codificador ( codercto.com ) </título> </cabeza> <cuerpo> < formulario acción = " /cgi-bin/test.cgi " método = " publicar " objetivo = " _en blanco " > < seleccionar nombre = " menú desplegable " > < opción valor = " codificador " seleccionado > Tutorial de Coder </ opción > < opción valor = " google " > Google </ opción > </seleccionar> < entrada tipo = " enviar " valor = " enviar " /> </formulario> </cuerpo> </html> El código del script test.cgi es el siguiente:
código prueba.cgi
#!/usr/bin/perl local ( $buffer , @pairs , $pair , $name , $value , %FORM ) # Leer información ; $ENV { ' REQUEST_METHOD ' } =~ tr / a - z / A - Z / ; ( $ENV { ' REQUEST_METHOD ' } ecuación " CORREO " ) { leer ( STDIN , $ buffer , $ ENV { ' CONTENT_LENGTH ' } ) ; { $ búfer = $ENV { ' QUERY_STRING ' } ; # Leer información del par nombre/valor @pairs = dividir ( /&/, $ buffer ) ; $par ( @pares ) { ( $nombre , $valor ) = dividir ( /=/, $par ) ; $valor =~ tr /+/ / ; $valor =~ s / % ( .. ) / paquete ( " C " , hexadecimal ( $1 ) ) / por ejemplo ; $FORMA { $ nombre } = $valor } $sitio = $ FORMULARIO { desplegable } ; " Tipo de contenido: texto/html r n r n " ; " <html> " ; imprimir " <cabeza> " ; imprimir ' <meta
charset ="utf-8"> ' ; ' <title>Tutorial de Coder (codercto.com) </title> ' ; " </head> " ; " <cuerpo> " ; imprimir " <h2>
El sitio web seleccionado es: $site </h2> " ; " </cuerpo> " ; imprimir " </html> " ; 1 ; En el navegador, el efecto de ejecución es el siguiente:
Uso de cookies en CGI
Una gran deficiencia del protocolo http es que no juzga la identidad del usuario, lo que genera grandes inconvenientes para los programadores. La aparición de la función de cookies compensa esta deficiencia.
Las cookies escriben datos de registro en el disco duro del cliente a través del navegador del cliente cuando el cliente accede al script. La información de los datos se recupera la próxima vez que el cliente accede al script, logrando así la función de discriminación de identidad. Las cookies se utilizan a menudo en la verificación de identidad.
Sintaxis de cookies
El envío de cookies http se implementa a través de encabezados http, que son anteriores a la transferencia de archivos. La sintaxis del encabezado set-cookie es la siguiente:
Set-cookie:nombre=nombre;expires=fecha;ruta=ruta;dominio=dominio;seguro
nombre=nombre: Es necesario establecer el valor de la cookie (el nombre no puede usar " ; " y " , " Use " ; " para separar múltiples valores de nombre, por ejemplo: nombre1=nombre1;nombre2=nombre2;nombre3=nombre3 .
expira = fecha: período de validez de la cookie, formato: expira = "Wdy,DD-Mon-AAAA HH:MM:SS"
ruta = ruta: establece la ruta admitida por las cookies. Si la ruta es una ruta, la cookie tendrá efecto en todos los archivos y subdirectorios de este directorio. Por ejemplo: ruta = "/cgi-bin/". la cookie será efectiva y tendrá efecto en este archivo, por ejemplo: ruta="/cgi-bin/cookie.cgi".
dominio=dominio: El nombre de dominio efectivo para las cookies, por ejemplo: dominio="www.codercto.com"
seguro: si se proporciona esta bandera, significa que la cookie solo puede pasar a través de un servidor https con protocolo SSL.
La recepción de cookies se logra configurando la variable de entorno HTTP_COOKIE. Los programas CGI pueden obtener información de las cookies recuperando esta variable.
Configuración de cookies
La configuración de cookies es muy simple: la cookie se enviará por separado en el encabezado http. El siguiente ejemplo establece el ID de usuario, la contraseña y caduca en las cookies:
Ejemplo
#!/usr/bin/perl imprimir " Establecer-Cookie:ID de usuario=XYZ; n " ; " Establecer-Cookie:Contraseña=XYZ123; n " ; " Set-Cookie:Expires=Martes, 31 de diciembre de 2017 23:12:40 GMT " ; n " ;print " Set - Cookie : Dominio = www codercto com ; n " ; print " Set - Cookie : Ruta =/ perl ; n " ;print " Tipo de contenido : texto / html r n r n " ;.......Otro contenido HTML encontrar galletas
La página de recuperación de información de cookies es muy simple. La información de las cookies se almacena en la variable de entorno CGI HTTP_COOKIE. El formato de almacenamiento es el siguiente:
Ejemplo
#!/usr/bin/perl $ rcvd_cookies = $ENV { ' HTTP_COOKIE ' } ; @cookies = dividir / / , $ rcvd_cookies ; $galleta ( @galletas ) { ( $key , $val ) = dividir ( /=/, $cookie ) #
divisiones en el primer =. $clave = ~ s /^ s +//; $val =~
s / ^ s +//; $ clave =~ s / s + $ // ; /; si ( clave $ ecuación " ID de usuario " ) { $id_usuario = $ val ; elsif ( $clave ecuación " Contraseña " ) { $contraseña = $ val ; } imprimir " ID de usuario = $ id_usuario n " ; " Contraseña = $contraseña n " ; El resultado de salida del ejemplo anterior es:
ID de usuario = XYZContraseña = XYZ123
módulo CGI
Perl proporciona muchos módulos CGI integrados; los dos siguientes se utilizan habitualmente:
módulo CGI
Berkeley cgi-lib.pl