Announcement

Collapse
No announcement yet.

CGI

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • CGI

    Ich brauche schnell dringends jemanden der sich a bisserl mit CGI auskennt ihr könnt mich erreichen unter ICQ: 116956934, e-mail: [email protected] oder durch Reposts THX

  • #2
    Totgesagte leben bekanntlich länger - das trifft mit Sicherheit auf CGI (das Common Gateway Interface) zu.
    Zugegeben, die Technologie ist mittlerweile in die Jahre gekommen. Und CGI hat in den letzten Jahren viel Konkurrenz (ASP/PHP/JSP, Zope) bekommen.
    Dennoch wird die populäre Schnittstelle bis zum heutigen Tag häufig genutzt. Und für diese Dauer-Präsenz in der Welt der Web-Programmierung gibt es eine Reihe guter Gründe:
    <br><br>
    1.) CGI ist einfach<br>
    2.) CGI ist sprachunabhängig<br>
    3.) CGI ist robust und hat sich bewährt<br>
    4.) Man braucht kaum Programmier-Erfahrung, um mit CGI einfache Aufgaben zu erledigen<br>
    5.) CGI reicht in der Regel für kleine Projekte aus<br>
    6.) verbesserte Performance (FastCGI, Plugins wie mod_perl, mod_snake u.a.)<br>
    <br><br>
    Doch was verbirgt sich hinter diesen drei Buchstaben? Ganz allgemein gesagt ist CGI der Teil des Webservers, der mit anderen Programmen kommunizieren kann.

    Aufgemerkt: CGI ist keine Programmiersprache, sondern eine wohldefinierte Schnittstelle! Nicht mehr und nicht weniger.

    Ein Webserver kann via CGI ein anderes Programm aufrufen und auf diesem Wege benutzerspezifische Daten (Formulareingaben eines Clients) an dieses Programm (das CGI-Skript) übergeben.

    Dieses Skript wiederum verarbeitet die übergebenen Daten (was sehr komplex werden kann, inklusive Datenbank-Verbindung) und generiert üblicherweise eine HTML-Ausgabe, die der Webserver an den Client (den Web-Browser) weiterleitet. Fertig.

    Mit Sicherheit ist es das Verdienst von CGI, dass man heute von dynamischen Websites spricht. Denn davor gab es lediglich statische Websites, die in der Regel aus Text und Bildern bestanden. In der Boomzeit des WWW (in den guten 90zigern;-)) wurden alsbald die Grenzen dieses Ansatzes offenkundig.

    Damit war der Siegeszug von CGI vorgezeichnet - man brauchte einfach eine Möglichkeit, um Nutzer-Eingaben zu verarbeiten und auf dieselben reagieren zu können. Denken Sie in diesem Zusammenhang an Shop-Systeme (Online-Reisebüros, Amazon et cetera).

    Wie oben bereits erwähnt, ist CGI sprachunabhängig. Sie können eine Programmier-Sprache Ihrer Wahl verwenden. Hier sind ein paar Kriterien zur Auswahl einer Sprache:
    <br><br>
    1.) gute Möglichkeiten zur Textmanipulation<br>
    2.) Schnittstellen zu anderen Bibliotheken und Utilities<br>
    3.) Zugriffsmöglichkeiten auf Umgebungsvariablen (bei UNIX/Linux)<br>
    <br><br>
    Anfangs dominierten C/C++ ganz klar die CGI-Programmierung; in der Folge wurden diese Sprachen zunehmend von Perl verdrängt. Erstens war der Arbeits-Aufwand wesentlich geringer, zweitens eignet sich Perl hervorragend zur Text-Manipulation. Ein Vorteil der C-Programme war (und ist) die Ausführungsgeschwindigkeit - schließlich handelt es sich um kompilierten Code und der läuft deutlich schneller ab.

    In unseren Tagen macht die OOP-Sprache Python immer mehr von sich reden - sie ist geradezu prädestiniert für die CGI-Programmierung (siehe Kriterien weiter oben). Desweiteren können Sie aber auch AppleScript (Mac), Tcl, C Shell oder Visual Basic einsetzen.

    Zur Veranschaulichung des Gesagten sollen zwei primitive Beispiele dienen - eines für Perl und eines für Python. Beide Mini-Programme tun im Prinzip dasselbe, sie geben das Server-Environment (im Beispiel für den Apachen) aus.

    Mit Hilfe dieser Variablen kann der Entwickler CGI-Programme erheblich leichter debuggen. Los geht es mit dem Perl-Programm.
    <PRE>
    #!/usr/bin/perl -w

    print "Content-type: text/html\n\n";

    foreach (%ENV) {
    print $_, "<br>";
    }
    </PRE>

    Und so sieht das Python-Programm aus:

    <PRE>
    #!/usr/local/bin/python

    import os

    try:
    import cgitb; cgitb.enable()
    except ImportError:
    pass

    print 'Content-type: text/html'
    print

    env = os.environ.keys()
    env.sort()

    for x in env:
    print x, '=', os.environ[x], '<br>'
    </PRE>

    Es gibt vor der Ausführung dieser Programme einiges zu beachten.

    1.) Perl und Python müssen installiert sein
    2.) die passenden Rechte müssen gesetzt werden
    3.) die Programme müssen in einem bestimmten Verzeichnis des Servers liegen

    Zu Punkt 1. Unter Linux sollte es diesbezüglich keine Probleme geben - beide Sprachen sind in der Regel vorinstalliert. Achten Sie dennoch auf den Interpreter-Pfad (die sogenannte Shebang-Zeile, d.h. die erste Zeile im jeweiligen Skript). Eventuell müssen Sie diesen Pfad anpassen. Die genaue Pfadangabe zum Interpreter erhalten Sie mit folgendem Befehl:
    <PRE>
    type perl
    </PRE>
    Gleiches gilt für Python. Zu Punkt 2. Für beide Programme müssen die entsprechenden Rechte gesetzt sein (755=rwxr-xr-x). Sollte das nicht der Fall sein, geben Sie dieses Kommando auf der Shell ein:
    <PRE>
    chmod 755 myCGIprog.pl
    </PRE>
    Gleiches gilt wiederum für das Python-Skript. Zum letzten Punkt. Beide Skripte müssen im <i>cgi-bin</i>-Verzeichnis des Servers plaziert werden.

    Nun können Sie beide Programme im Browser aufrufen:
    <PRE>
    http://localhost/cgi-bin/myCGIprog.pl
    </PRE>

    Hat Ihre Maschine einen anderen Namen, müssen Sie <i>localhost</i> durch diesen Namen ersetzen. Danach sollte als Ausgabe das Server-Environment in Ihrem Browser zu sehen sein.

    Viel Spaß.

    Thomas Kaufmann
    &#10

    Comment

    Working...
    X