Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   HTML, Javascript y otros (https://www.clubdelphi.com/foros/forumdisplay.php?f=38)
-   -   Html,cgi (https://www.clubdelphi.com/foros/showthread.php?t=39732)

Io 28-01-2007 21:58:03

Html,cgi
 
Saludos al Foro.

Soy nuevo en la creación de páginas web. Quiero enfocar el tema en la creación de formularios y el tratamiento de la información obtenida.
He leido que para el tratamiento de la información recogida por los
formularios se utilizarían los cgi's y/o PHP. He sacado en claro que los
scripts de cgi se puede hacer en Perl,c,etc.

He estado mirando por la red el cómo se enlaza un formulario con un script
cgi, pero no veo como pasan los datos ni como el script actua y devuelve resultados. En fin totalmente perdido.

Alguien me puede aconsejar cómo y por dónde empezar?

Gracias.:D

seoane 28-01-2007 22:56:14

Un cgi no es mas que un programa que recibe los datos por la entrada estándar y tiene que escribir la respuesta por la salida estándar. Además el servidor puede pasar al cgi otras variables como Variables de Entorno al ejecutar el cgi.

Aunque delphi creo que cuenta con librerías especificas para hacer cgis, un cgi simple se puede hacer con unas pocas lineas de código.

Por ejemplo:
Código Delphi [-]
program Prueba;

uses Windows, SysUtils;

procedure StdWrite(Str: String);
var
  StdOutput: THandle;
begin
  StdOutput:= GetStdHandle(STD_OUTPUT_HANDLE);
  if (StdOutput <> INVALID_HANDLE_VALUE) and (StdOutput <> 0) then
    FileWrite(StdOutput,PChar(Str)^,Length(Str));
end;

procedure StdWriteln(Str: String);
begin
  StdWrite(Str + #13#10);
end;

begin
  // Escribimos las cabeceras
  StdWriteln('Content-type: text/html');
  // Linea en blanco para separar las cabeceras del contenido
  StdWriteln(EmptyStr);
  // Escribimos el contenido
  Writeln('< html >< h1 >Hola mundo< /h1 >< /html >'); // Quita los espacios en blanco
end.

O en este otro ejemplo, que muestra todas las variables de entorno que el servidor le pasa al cgi.
Código Delphi [-]
program Prueba2;

uses Windows, SysUtils;

procedure StdWrite(Str: String);
var
  StdOutput: THandle;
begin
  StdOutput:= GetStdHandle(STD_OUTPUT_HANDLE);
  if (StdOutput <> INVALID_HANDLE_VALUE) and (StdOutput <> 0) then
    FileWrite(StdOutput,PChar(Str)^,Length(Str));
end;

procedure StdWriteln(Str: String);
begin
  StdWrite(Str + #13#10);
end;

function GetEnvironmentStr(Sep: String): String;
var
  P: PChar;
  Str: String;
begin
  Result:= EmptyStr;
  P:= GetEnvironmentStrings;
  if P <> nil then
  begin
    Str:= String(P);
    while Str <> EmptyStr do
    begin
      Result:= Result + Str + Sep;
      inc(P,Length(Str)+1);
      Str:= String(P);
    end;
    FreeEnvironmentStrings(P);
  end;
end;

begin
  // Escribimos las cabeceras
  StdWriteln('Content-type: text/html');
  // Linea en blanco para separar las cabeceras del contenido
  StdWriteln(EmptyStr);
  // Escribimos el contenido
  Writeln(Format('< html >%s< /html >',[GetEnvironmentStr('< br >' + #13#10)])); // Quita los espacios en blanco
end.

También preguntas como envía el navegador los datos al cgi, normalmente se usan formularios para eso. Hay dos métodos GET y POST, el primero manda los diferentes campos codificados en un mismo string. Para obtener ese texto puedes usar la variable de entorno QUERY_STRING, haciendo algo como esto:
Código Delphi [-]
function GetEnvVar(Nombre: string): string;
var
  Str: PChar;
  Len: Integer;
begin
  Len:= GetEnvironmentVariable(PChar(Nombre),nil,0);
  if Len > 0 then
  begin
    GetMem(Str,Len+1);
    try
      GetEnvironmentVariable(PChar(Nombre),Str,Len);
      Result:= String(Str);
    finally
      FreeMem(Str);
    end;
  end else Result:= EmptyStr;
end;

// Por ejemplo
Writeln(Format('< html >%s< /html >',[GetEnvVar('QUERY_STRING')]));  // Quita los espacios en blanco

El método POST, sin embargo puede mandar cualquier tipo de información, texto, imágenes, archivos, etc. y el cgi lo recibe a través de su entrada estándar, pero eso ya es otra historia :) , para empezar creo que esto es suficiente.

roman 29-01-2007 01:01:56

Yo más bien comenzaría por definir si quiere usar delphi para sus páginas web y tener en cuenta que eso lo restringe a servidores windows. De no ser así pues le recomendaría instalarse apache+php y conseguirse un tutorial de php para empezar. A menos que tenga alguna razón muy específica no le recomendaría irse por el lado de perl.

// Saludos

Io 29-01-2007 21:15:39

Hola.

Efectivamente, debía haber especificado si voy a utilizar delphi.

No tenía previsto utilizar delphi.
Estoy creando un servidor linux, con debian,apache,firebird y despues de seguir buscando por la red, instalaré el soporte php, y a seguir por este camino.


Muchas Gracias por el interés mostrado.:)


La franja horaria es GMT +2. Ahora son las 18:53:30.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi