Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > HTML, Javascript y otros
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-01-2007
Avatar de Io
[Io] Io is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: San Fernando (Cádiz)
Posts: 259
Poder: 19
Io Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 28-01-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 29-01-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #4  
Antiguo 29-01-2007
Avatar de Io
[Io] Io is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: San Fernando (Cádiz)
Posts: 259
Poder: 19
Io Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Formularios php y html halizia PHP 1 16-11-2006 12:09:03
Generar HTML JMGR Internet 4 15-07-2005 12:59:55
HTML to RTF JXJ Varios 2 25-06-2005 02:29:05
convertir de rtf a html ivet Servers 1 30-04-2005 09:33:44
transformar HTML a XML jpcancino Internet 1 07-01-2004 14:48:38


La franja horaria es GMT +2. Ahora son las 13:23:54.


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
Copyright 1996-2007 Club Delphi