Einzelnen Beitrag anzeigen

Benutzerbild von Xong
Xong

Registriert seit: 9. Jan 2008
186 Beiträge
 
Delphi 2006 Professional
 
#24

Re: Konzeptfrage - Internet-Chat als Freeware, wie? [CGI]

  Alt 28. Feb 2008, 10:17
Zitat von hincapie:
Falls Du genügend Geduld hast, kannst Du mir das ja mal näher erläutern...
Ich bin soweit! =)

Ich erkläre dir das am besten anhand eines kleines Tutorials.
Achja, es geht um CGI.

Mein Testsystem ist das aktuelle XAMPPLITE-Paket von http://apachefriends.org. Ich gehe einfach mal davon aus, dass du auch einen Indianer zur Verfügung hast.

Meine gesamten Angaben beziehen sich auf http://httpd.apache.org/docs/2.0/howto/cgi.html.
  1. Warum eigentlich CGI?
    Das Common Gateway Interface stellt eine Schnittstelle zur Verfügung, die es uns erlaubt mit einem beliebigen Programm in einer beliebigen Programmiersprache Eingaben, die über eine Webseite kommen und vom HTTP Server an unser Programm weitergeleitet werden, zu verarbeiten und Ergebnisse auszugeben. Mächtig gewaltig (, Egon)!
  2. Die Konfiguration
    Normalerweise ist der Apache vom Start weg "CGI-fähig". Deswegen werde ich dazu keine weiteren Ausführungen machen. Eine gute Beschreibung, wie man den Apache für das CGI richtig konfiguriert, findet man im oben geposteten HowTo.
  3. Das erste CGI-Programm
    Ich erstelle in Delphi eine Konsolenanwendung mit folgendem Code:
    Delphi-Quellcode:
    program hw;

    {$APPTYPE CONSOLE}

    uses
      SysUtils;

    begin

      writeln(AnsiToUtf8('Content-type: text/html'));
      writeln;
      writeln(AnsiToUtf8('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'));
      writeln(AnsiToUtf8('<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">'));
      writeln(AnsiToUtf8('<head>'));
      writeln(AnsiToUtf8('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'));
      writeln(AnsiToUtf8('<title>Beispielprogramm</title>'));
      writeln(AnsiToUtf8('</head>'));
      writeln(AnsiToUtf8('<body>'));
      writeln(AnsiToUtf8('<h1>Hallo Welt</h1>'));
      writeln(AnsiToUtf8('</body>'));
      writeln(AnsiToUtf8('</html>'));

    end.
    Diese Datei speichere ich als hw.exe im Verzeichnis <Installationspfad von XAMPP>/cgi-bin/ und rufe, nachdem ich den Apache gestartet habe, die URL http://127.0.0.1/cgi-bin/hw.exe auf. Als Ausgabe erhalte ich: "Hallo Welt!".
  4. Erklärung des Quellcodes
    Möchte man an den Browser etwas ausgeben, so muss man einfach in die Standardausgabe schreiben. Das geschieht mit der Funktion writeln automatisch.
    Als erstes muss ein Header angegeben werden. Dieser sagt dem Browser u.a. von welchem MIME-Typ die zu empfangende Ressource ist. In unserem Fall ein einfaches HTML-Dokument. Auf die Header müssen mindestens zwei Zeilenumbrüche folgen. Dann folgt der eigentliche Inhalt. Es dürfte eigentlich alles klar sein bis hier hin, oder?
  5. Eingaben auslesen
    Die GET-Parameter bekommt aus dem Querystring, die POST-Parameter über die Standardeingabe.
    Damit habe ich mich in Delphi noch nicht beschäftigt und verweise dich auf die Klasse TCGIRequest. Es ist ohne Probleme möglich, die Parameter einzulesen und weiterzuverarbeiten.
  6. Möglichkeiten und Fazit
    Mit einer CGI-Anwendung ist es nicht nur möglich HTML-Dokumente auszuliefern. Genauso gut kann man ein Bild berechnen und ausgeben. Oder ein Stylesheet. Oder eine Textdatei. Oder oder oder...
    CGI-Anwendungen sind mächtig und flexibel. Mit ihnen kann ein Programmierer in der Sprache seiner Wahl arbeiten und alles Mögliche realisieren.
    Auf jeden Fall sehr interessant und würdig, sich näher damit zu beschäftigen.

Ich habe übrigens auch noch ein Tutorial hier aus der DP gefunden: Eine einfache CGI-Anwendung (WinCGI.DLL).

Ich hoffe, das hilft dir weiter. =)

LG,
Xong
Angehängte Dateien
Dateityp: exe hw_916.exe (41,0 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat