CGI Web Programming/es

From Lazarus wiki

English (en) español (es) français (fr) Bahasa Indonesia (id) русский (ru) 中文(中国大陆)‎ (zh_CN)

Este es el comienzo de una tutoría sobre programación web con la interfaz CGI. Estáis Todos invitados a contribuir.

Sobre CGI

CGI Interfaz de entrada común (Common Gateway Interface) funciona de forma sencilla:

Tenemos dos equipos:

  • Servidor - Este equipo almacenará los archivos alojados (páginas web, imágenes y CGI);
  • Cliente - Generalmente, este equipo dispone de un navegador para solicitar los archivos alojados en el ordenador servidor.

Usted puede utilizar CGI sólo si su servidor cuenta con soporte para CGI. Trás el alojamiento, CGI puede ser utilizado normalmente así: http://www.turservidor.es[.xx]/tuAutenticación/cgi-bin/nombredetucgi[.exe]

Notas:

  • El archivo CGI no requiere de la extensión .exe.
  • El CGI debe ser (obviamente) compilado para la plataforma (máquina/sistema operativo) del ordenador servidor (Linux, Windows, ...)

Sobre FreePascal CGI y cómo puedes probar tus módulos CGI

Un Free Pascal CGI es un programa ejecutable normal, como cualquier programa de tu ordenador. A diferencia de los CGI en Perl, Free Pascal CGI no es interpretado. Es un programa ejecutable independiente.

Para probar un CGI, debes tener instalado en tu PC un Servidor HTTP con soporte para CGI. Un Servidor HTTP bueno, y recomendable es http://es.wikipedia.org/wiki/Servidor_HTTP_Apache Apache], disponible para Linux y Windows. Otro Servidor HTTP es Xitami que soporta CGI en perl y 16 bits (pero Xitami es muy arcaico).

Un ejemplo muy básico

Este es un ejemplo de un programa CGI mínimo que muestra...

  1. Configuración de una galleta (cookie)
  2. Generar el tipo de contenido (es decir, enviar texto válido para HTTP)
  3. Leer galletas (cookies)
  4. Leer datos de un formulario a través de GET
  5. Leer datos de un formulario a través de POST
 program mini;

 uses dos;

 var
   a:string;
   c:char;
 begin
   //set a cookie (must come before content-type line below)
   //don't forget to change the expires date
 writeln('Set-cookie:widget=value; path=/; expires= Mon, 21-Mar-2005  18:37:00 GMT');

   //output legal http page
   writeln('Content-Type:text/html',#10#13);

   //demonstrate get cookies
   a:= GetEnv('HTTP_COOKIE');
   writeln('cookies:',a);
  
   //demonstrate GET result
   a:='';
   a:= GetEnv('QUERY_STRING');
   writeln('GET: ',a);
	
   //demonstrate POST result 
   a:='';
   while not eof(input) do
    begin
      read(c);
      a:= a+c;
    end;	 
   writeln('POST: ',a);
  end.

Un contador simple

La aplicaciónn hitcounter presenta un simple contador para tu sitio web. Es posible poner en listas de bloqueo en un archivo de configuración para así excluir los robots y tal vez tu propio ordenador de las estadísticas. Quedan un montón de mejoras posibles, como por supuesto establecer de una cookie para obtener sólo un recuento por sesión, pero da una buena introducción a la programación CGI. Si utilizas el código y lo modificas, por favor, envíame un parche para poder actualizarlo.

Puedes encontrar el código aquí: [1]

Marcos de trabajo para CGI existentes

Existen unidades de CGI y los Marcos de trabajo que hacen el trabajo con CGI trivial (y permiten establecer las cookies, sesiones, recuperar POST y GET). VerPowtils

También hay un CGIModule para lazarus, y unos pocos unidades para CGI y HTML en la FCL de freepascal.

Otro marco para CGI y FastCGI para FreePascal / Delphi es ExtPascal un envoltorio Ext JS.