Kapitel 22
CGI-Programmierung
612
Beim Aufruf eines fehlerhaften Skripts erscheint dann im Webbrowser eine Fehlermel-
dung. Im folgenden Beispiel wird versucht, auf eine nicht definierte Variable zuzugreifen.
Die Antwort wird in Abbildung 22.7 wiedergegeben.
Abb. 22.7: Fehlermeldung eines CGI-Skripts im Debugging-Modus
22.7 Objektorientierte CGI-Skripte – Beispiel: ein Chatroom
Komplexere CGI-Skripte sollte man nach den Prinzipien der Objektorientierung entwi-
ckeln. Als Beispiel programmieren wir ein kleines Chat-System. Wenn Sie das Projekt inte-
ressiert, probieren Sie es am besten zuerst einmal aus, bevor Sie es nachprogrammieren
>>> import cgitb
>>> cgitb.enable()
#!/Python35/python.exe
import cgitb
cgitb.enable()
print ("Content-Type: text/html")
print ()
print ("<html><h1>cgitb-Test</h1>")
print (unbekannter_Name)
print ("</html>")
613
22.7
Objektorientierte CGI-Skripte – Beispiel: ein Chatroom
oder weiterentwickeln. Ich gehe davon aus, dass Sie die Beispielprogramme vom Server des
mitp-Verlages heruntergeladen haben (siehe Anhang C).
Starten Sie im Verzeichnis
httpserver den http-Server httpd.py (unter Windows z.B.
durch Anklicken des Programmicons).
Öffnen Sie zweimal ein Browserfenster und geben Sie jeweils im Adressfenster den URL
http://localhost:8000/html/chatstart.html ein. Sie sehen in jedem Browserfenster
die Startseite des Chatraums (Abbildung 22.8). Simulieren Sie nun einen Chat (ein
Gespräch) zwischen zwei Personen. Alles spielt sich auf Ihrem Rechner ab. Aber Sie können
Ihr System natürlich auch auf einem Server laufen lassen, der an das Internet angebunden
ist und von überall in der Welt erreichbar ist.
Abb. 22.8: Statische HTML-Seite für das Login
Um den Chatroom betreten zu können, muss man sich einloggen. Geben Sie auf der Start-
seite in einem der Browserfenster einen Namen ein. Sobald Sie die Login-Schaltfläche ankli-
cken, öffnet sich die Webseite mit dem Chatroom. Sie wurde von einem CGI-Skript erzeugt.
Nach Ihrem Login könnte Ihr Browserfenster so aussehen wie in Abbildung 22.9. Unter der
Überschrift steht eine Meldung, dass Sie den Raum betreten haben. Sie wurde vom System
automatisch erzeugt. Nach jedem Login eines neuen Chat-Teilnehmers wird eine solche
Meldung dem Dialog hinzugefügt.
Abb. 22.9: Chatroom nach dem ersten Login
Kapitel 22
CGI-Programmierung
614
In das Eingabefeld hinter Ich sage: können Sie einen Gesprächsbeitrag schreiben. Nach dem
Klicken auf den OK-Button wird Ihr Beitrag an den Server geschickt. Eine Textzeile in der
Form
wird dem Dialog angehängt. Anschließend erhält der Client eine neue Webseite mit aktua-
lisiertem Dialog, auf dem also auch Ihre letzte Äußerung zu sehen ist. Der Dialog ist ein
Text, der das Gespräch protokolliert und aus lauter Beiträgen der Chat-Teilnehmer zusam-
mengesetzt ist. Auf der Chatroom-Seite werden aber nur höchstens die letzten zehn Zeilen
dargestellt.
Was Sie nicht sehen können: Das Formular in der Webseite enthält auch eine versteckte
Variable (Typ
hidden). Sie enthält den Namen des Chat-Teilnehmers. Den muss der Server
kennen, wenn er Ihren Beitrag in den Dialog einfügt. Dazu später mehr.
Wenn Sie auf den OK-Button klicken, ohne etwas in das Eingabefeld geschrieben zu haben,
wird nur der Dialog aktualisiert (vielleicht haben ja inzwischen andere etwas gesagt). Abbil-
dung 22.10 zeigt eine Momentaufnahme aus einem Chat zweier Personen.
Beachten Sie: Es entsteht ein (unendlicher) zyklischer Kommunikationsprozess, aus dem
man nur durch Schließen des Browserfensters oder Eingabe eines neuen URLs in das
Adressfenster entkommen kann: Das CGI-Script erzeugt immer wieder eine interaktive
Seite mit einem Button. Klickt man diesen an, wird wieder dasselbe Skript aufgerufen. Es
liefert wieder eine interaktive Seite nach dem gleichen Muster usw.
Abb. 22.10: Vom CGI-Skript dynamisch erzeugte HTML-Seite
Statische HTML-Seite für das Login
Der folgende HTML-Quelltext erzeugt die Startseite des Chat-Systems (siehe Abbildung
22.8). Das Formular enthält zwei Variablen, die an
<input>-Tags gekoppelt sind. In das Ein-
gabefeld (Variablenname
name) kann der Benutzer seinen Login-Namen eintragen. In
einem
<input>-Tag vom Typ hidden ist als Wert ein konstanter Begrüßungstext eingetra-
Name: Beitrag

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.