Blue Ribbon Campaign for Free Speech El CGI Hecho Realmente Fácil

o, Escribiendo scripts CGI para procesar formas Web

Ir a las Notas Ir a Otros Tutoriales

In English (en Inglés)
Auf deutsch (en Alemán), traducido por Friedemann Wachsmuth
Em português (en portugués) traducido por Claudio F. Chagas
In het Nederlands (en holandés), traducido por Simon Amstel

Asi que son las 4:00, tu jefe necesita un script CGI escrito para las 4:30, y ni siquiera sabes qué significa CGI. Has venido al lugar correcto.

No hay mucho al respecto, a pesar de cualquier chisme intimidatorio que hayas podido oir. Si puedes leer de STDIN y escribir a STDOUT, entonces puedes escribir scripts CGI. Si ya eres un programador, este preliminar puede enseñarte lo básico de CGI en unos cuantos minutos. Si no eres programador, este preliminar no te ayudará mucho-- lo siento. Aprende un poco de programación, incluso scripts de shell y regresa después. ¡Buena suerte!

Este preliminar se enfoca a escribir scripts CGI para procesar formas HTML en el Web. Se salta algunos detalles, pero puede hacerlo muy rápido (literalmente una hora o menos), y cubre el 90% de las situaciones en el mundo real. Cuando tengas la necesidad, checa las especificaciones completas CGI. Para ayuda con la escritura de formas HTML, ve este fragmente del tutorial, o esta documentación en NCSA.

Una vez que hayas leído esta página, ve las notas para scripts de ejemplo y otros temas.


¿Qué es CGI?

CGI no es un lenguaje. Es simplemente un protocolo que puede ser usado para comunicarse entre formas Web y tu programa Un script CGI puede ser escrito en cualquier lenguaje que pueda leer de STDIN, escribir en STDOUT, y leer variables de entorno como virtualmente cualquier lenguaje de programación, incluyendo C, Perl, o incluso scripts de shell.

Estructura de un script CGI

Aquí está la secuencia típica de un script CGI:

  1. Leer la forma de entrada del usuario.
  2. Hacer lo que quieras con los datos.
  3. Escribir la respuesta HTML a STDOUT.

El primer y último pasos se describen abajo.


Leyendo la Forma de Entrada del Usuario

Cuando el usuario envía la forma, tu script recibe los datos como un conjunto de pares nombre-valor. Los nombres que definiste en las etiquetas INPUT (o etiquetas SELECT o TEXTAREA), y los valores son cualquier cosa que el usuario haya escrito o seleccionado. (Los usuarios también pueden enviar archivos con formas, pero este preliminar no lo cubre.)

Este conjunto de pares nombre-valor se te envía como una sola larga cadena, la cual debes procesar. No es muy complicado, y existen muchas rutinas que lo hacen por tí. Aquí está una en Perl, una más simple en Perl, o una en C. Para un ambiente más elaborado de CGI, ve el módulo Perl's CGI.pm. El directorio CGI en Yahoo incluye muchas rutinas CGI (y scripts ya escritos), en varios lenguajes..

Si esto ya te es suficiente, salta a la siguiente sección. Si no lo es, o simplemente eres curioso, aquí está el formato de una cadena larga:

"nombre1=valor1&nombre2=valor2&nombre3=valor3"

Así que solamente divide en los ampersands y signos de igual. Entonces, haz dos cosas más para cada nombre y valor:

  1. Convierte todos los caracteres "+" en espacios, y
  2. Convierte todas las secuencias "%xx" en el caracter cuyo valor ascii sea "xx", en hexadecimal. Por ejemplo, convierte "%3d" en "=".
Esto es necesario porque la cadena larga original es código-URL, para permitir signos de igual, ampersands, y otros en la entrada del usuario.

Entonces de dónde obtienes la cadena larga? Eso depende del método HTTP que la forma haya usado:

(Si te estás preguntando sobre la diferencia entre GET y POST, ve la nota de discusión. Respuesta corta: POST es más de propósito general, pero GET está bien para formas pequeñas.)


Enviando la Respuesta de Regreso al Usuario

Primero, escribe la línea

Content-type: text/html
mas otra línea en blanco a. Después de eso, escribe tu página de respuesta HTML en STDOUT, y se enviará al usuario cuando tu script termine de ejecutarse. Eso es todo.

Si, estás generando código HTML en pleno vuelo. No es muy difícil, es en realidad bastante sincero. El HTML fue diseñado para ser suficientemente simple para generarse así.

Si quieres enviar de regreso una imágen u otra respuesta no-HTML, aquí está cómo hacerlo.


Eso es todo. Buena Suerte!

¿Ves qué fácil es? Si todavía no me crees, adelante y escribe un script. Asegúrate de poner el archivo en el lugar correcto en tu servidor, y hacerlo ejecutable; revisa esta nota para más consejos.

Antes de que escribas muchos scripts, aprende sobre asuntos de seguridad CGI.

Cuando necesites saber más sobre CGI, ve la especificación completa de CGI en NCSA. W3C también mantiene una página CGI con ligas a cualquier documento que puedas necesitar.

Oh sí, CGI quiere decir Common Gateway Interface-- en otras palabras, un método estándar ("común") de comunicación ("interfaz") entre diferentes procesos (tipo de "gateway").


Otras Cosas Para Jugar

Ve la Página de Notas para los temas siguientes:

  1. Ejemplos de programas CGIs
  2. Script de CGI de Mailer
  3. Seguridad con Scripts CGI
  4. Poniendo Tu Script en el Servidor
  5. Enviando un Archivo Existente como Respuesta
  6. Otras Variables de Entorno CGI Utiles
  7. Regresando una Imágen u Otra Respuesta No-HTML de un Scritp CGI
  8. Cuál es la diferencia entre GET y POST?
  9. Ganando Más Control, con Scripts de Encabezados No-Procesados


© 1996-1998 James Marshall (exigo comentarios; para preguntas, por favor revisa primero el FAQ)
Traducido en 1998 por René Alvarez

Ultimo Modificado: Abril 18, 1998 http://www.jmarshall.com/easy/cgi/spanish/