Difference between revisions of "CGI Web Programming/es"

From Free Pascal wiki
Jump to navigationJump to search
(New page: {{CGI Web Programming}} Este es el comienzo de una tutoría sobre programación web con la interfaz CGI. Estáis Todos invitados a contribuir. == Sobre CGI == [http://es.wikipedia.org/wi...)
 
m
Line 1: Line 1:
{{CGI Web Programming}}
+
{{CGI Web Programming}}[[category:Castellano|T]][[category:Español|Tutoría]]
  
 
Este es el comienzo de una tutoría sobre programación web con la interfaz CGI. Estáis Todos invitados a contribuir.
 
Este es el comienzo de una tutoría sobre programación web con la interfaz CGI. Estáis Todos invitados a contribuir.
Line 40: Line 40:
 
  uses dos;
 
  uses dos;
  
var
+
var
  a:string;
+
  a:string;
  c:char;
+
  c:char;
begin
+
begin
  //set a cookie (must come before content-type line below)
+
  //set a cookie (must come before content-type line below)
  //don't forget to change the expires date
+
  //don't forget to change the expires date
writeln('Set-cookie:widget=value; path=/; expires= Mon, 21-Mar-2005  18:37:00 GMT');
+
writeln('Set-cookie:widget=value; path=/; expires= Mon, 21-Mar-2005  18:37:00 GMT');
  
  //output legal http page
+
  //output legal http page
  writeln('Content-Type:text/html',#10#13);
+
  writeln('Content-Type:text/html',#10#13);
  
  //demonstrate get cookies
+
  //demonstrate get cookies
  a:= GetEnv('HTTP_COOKIE');
+
  a:= GetEnv('HTTP_COOKIE');
  writeln('cookies:',a);
+
  writeln('cookies:',a);
 
    
 
    
  //demonstrate GET result
+
  //demonstrate GET result
  a:='';
+
  a:='';
  a:= GetEnv('QUERY_STRING');
+
  a:= GetEnv('QUERY_STRING');
  writeln('GET: ',a);
+
  writeln('GET: ',a);
 
 
  //demonstrate POST result  
+
  //demonstrate POST result  
  a:='';
+
  a:='';
  while not eof(input) do
+
  while not eof(input) do
  begin
+
    begin
    read(c);
+
      read(c);
    a:= a+c;
+
      a:= a+c;
  end;  
+
    end;  
  writeln('POST: ',a);
+
  writeln('POST: ',a);
end.  
+
  end. </delphi>
</delphi>
 
  
 
==Un contador simple==
 
==Un contador simple==
Line 78: Line 77:
 
Puedes encontrar el código aquí:
 
Puedes encontrar el código aquí:
 
[http://modelbuilder.svn.sourceforge.net/viewvc/modelbuilder/html/cgi/]
 
[http://modelbuilder.svn.sourceforge.net/viewvc/modelbuilder/html/cgi/]
 
  
 
==Marcos de trabajo para CGI existentes==
 
==Marcos de trabajo para CGI existentes==

Revision as of 22:28, 29 August 2010

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

<delphi> 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. </delphi>

Un contador simple

La aplication 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.