CGI - Wichtiges und Nützliches

CGI-Scripte sind Programme, welche auf Ihrem Web-Server laufen. Manchmal beispielsweise verarbeiten diese Programme Formular-Eingaben und geben dann entsprechende Ergebnis-Informationen an den Browser zurück.

Wichtige Information für Programmierer: Die Server der JMC-Technologieberatung verwenden einen CGI-Wrapper. Dieses Programm sorgt dafür, daß CGI's nur in der Verzeichnisstruktur des Servers ablaufen, von dem aus es gestartet wurde. Damit wird sichergestellt, daß kein Benutzer ein schädliches Programm ausführen kann, welches auf andere Server zugreift oder das Betriebssystem manipuliert.

Programmieren Sie Ihre CGI's so, daß sie die Verzeichnisstruktur Ihres virtuellen Webservers nicht verlassen. Müssen Sie auf Systemdienste wie Perl oder Sendmail zugreifen, verwenden Sie die folgenden Pfade:

  • Perl: /usr/bin/perl
  • Sendmail: /usr/sbin/sendmail

Wohin mit den Script's? Sobald Sie ein solches CGI-Script programmiert haben, spielen Sie es mittels FTP (File Transfer Protocol) in ein beliebiges Verzeichnis Ihres WebServers. Dabei ist unbedingt zu beachten, daß der Übertragungsmodus auf ASCII eingestellt ist. Sie sollten auch nicht vergessen, Ihr Script auf "ausführbar" zu stellen.

  • Öffnen Sie unter WS_FTP das "local-window" und drücken Sie die rechte Maustaste. Dadurch erscheint eine Auflistung von verschiedenen FTP-Kommandos. Wählen Sie hieraus die "SITE option". Hier wiederum geben Sie ein:

    chmod 755 scriptname.

CGI-Programme können Sie in verschiedenen Sprachen schreiben, z.B. in Perl, Unix shell oder C/C++. Bei der Auswahl der Sprache sollten Sie berücksichtigen, daß die CGI-Scripte in C/C++ vor dem Online-Einsatz kompiliert werden müssen. Allerdings brauchen Sie das nicht selber machen. Sobald Sie Ihre Scripte in Ihr Verzeichnis übertragen haben, senden Sie uns einfach ein E-Mail mit folgenden Angaben:

  • Ihren Domain-Namen
  • Ihre UserID und Ihr Paßwort
  • die Namen Ihrer Scripte
  • Das Verzeichnis in dem sich das Script befindet

Sollte etwas nicht korrekt sein, so meldet sich der CGI-Wrapper und gibt Ihnen eine entsprechende Fehlermeldung auf dem Browser aus.

GET oder POST?
Es existieren zwei Methoden, welche bei Formularen die Eingaben des Nutzers an das CGI-Script übermitteln: GET und POST. Eine dieser beiden Möglichkeiten muß dem METHOD-Attribut des <FORM>-Tags in Ihrer HTML-Seite zugewiesen werden:

<FORM METHOD=POST ACTION="/cgi-local/script">

Damit jedes Eingabe-Feld Ihres Formulars eindeutig identifiziert werden kann, erhält jedes Feld einen Namen. Bei der Übertragung der Eingaben an das Script werden dann sog. Name-/Werte-Paare gebildet, jedem Feld-Namen wird also der eingegebene Wert zugewiesen.

  • GET:
    Die Name-/Wert-Paare werden in die URL (Pfad des Scripts, welches die Eingaben auswerten soll) kodiert. D.h. sie werden ans Ende der URL gehängt, wobei sie davon durch ein "?" und untereinander durch ein "&" getrennt, und dann auf der Server-Seite einer Umgebungsvariablen namens QUERY_STRING zugewiesen werden. Z.B.:

    http://www.jmc.net/cgi/script?name=ulf&alter=32

  • POST:
    Die kodierten Name-/Werte-Paare werden hier direkt über die Standard-Eingabe dem Script übergeben. Es werden keine Umgebungsvariablen eingesetzt. Die Aufteilung des Datenstreams in weiterverwendbare Variablen bleibt Ihnen überlassen.

Meistens wird empfohlen, die POST-Methode zu verwenden, da hier keine Variable (QUERY_STRING) benutzt wird. Denn, wenn viele Daten an das Script gesendet werden, könnte es vorkommen, daß die Größe von QUERY_STRING nicht ausreicht, alle diese Daten aufzunehmen. Bei POST werden die Daten als separater Stream gesendet, Daten-Umfangs-Beschränkungen existieren nicht.

Unix Shell oder Perl
Damit Ihr Script funktioniert, ist es wichtig, je nach angewendeter Sprache einen anderen Pfad in der ersten Code-Zeile anzugeben. Dadurch wird dem Server mitgeteilt, in welchem Verzeichnis die jeweilige Sprache installiert ist.

  • Unix shell: #!/bin/sh
  • Perl: #!/usr/bin/perl

Möchten Sie, daß Ihr Script in eine Datei schreibt, welche sich in Ihrer Verzeichnisstruktur befindet, dann muß der absolute Pfad zu dieser Datei angegeben werden.

Formular-Design
Eine umfassende Beschreibung der Sprache HTML inklusive Formular-Erstellung finden Sie unter http://www.selfhtml.com.

Bitte beachten Sie, daß innerhalb der <FORM>-Anweisung keine Tabelle für die einzelnen Felder definiert werden darf, den dann ignoriert der Browser den Aufruf des Scripts!


 
Letztes Update:  12:59 28/05 2004