cgi-Scripts |
Zum Dokumentenanfang |
Einleitung |
nach oben |
Die heute noch am häufigsten verwendete Programmiersprache für cgi-Skripte ist PERL. Dieser Sprache - die über mächtige Werkzeuge zur Stringbearbeitung verfügt - ist im SelfHTML-Kurs von Stefan Münz ein großes Kapitel gewidmet. Reinschauen lohnt!
Der Vorteil von cgi-Skripten aus Sicht des PC- oder Apple-Benutzers ist, daß er er die Skripte einfach in jedem beliebigen Texteditor erstellen kann. Sie werden erst beim Aufrufen zeilenweise von einem Interpreter abgearbeitet (ähnlich wie das gute alte Basic anno dunnemals). Damit entfällt das Kompilieren für den Server-Rechner (meistens UNIX) - denn wer hat auf seinem Computer zuhause schon einen funktionierenden UNIX-Compiler? Außerdem ist PERL auf praktisch jedem UNIX-Server installiert.
Quellen |
nach oben |
Außerdem gibt es eine Menge vorprogrammierte cgi-Skripts (allerdings zumeist auf englisch), die man nur noch seinen Bedürfnissen anpassen muß. Einige Adressen sind (ohne jeden Anspruch auf Vollständigkeit):
Matt's Script Archive | |
Fluid Dynamics | |
Zonecoaster | |
XWolf (deutsch!) | |
Selena Sol | |
PERL Resource Center |
PERL-Tips |
nach oben |
Hier folgen einige kurze Tips zur Verwendung von cgi-Skripts:
Die erste Zeile eines
jeden PERL Skripts fragt nach dem Installationsverzeichnis
des PERL-Interpreters. Standardmäßig lautet diese Zeile i.d.R: #! /usr/bin/perl Dies ist auch die korrekte Einstellung für die Verwendung von cgi-Skripten auf den virtuellen Akademie-Servern. Es muß die erste Zeile des Skripts sein und sie darf auf keinen Fall gelöscht werden, obwohl es streng genommen eine Kommentarzeile ist. Auf manchen Servern liegt der PERL-Interpreter auch an folgender Stelle: #! /usr/local/bin/perl |
|||||||||||||
In den meisten
Skripts wird als eine der Variablen der absolute Pfad
zum Skript oder einer aufzurufenden / zu schreibenden Datei verlangt. Woher nehmen, da man
ja nun nicht an der Eingabekonsole des Unixrechners sitzt? Das, was man sieht, wenn man mittels FTP (siehe Lektion in Kapitel Basiswissen) Dateien auf den Server hochlädt, ist i.d.R. als Angabe ausreichend. Im Falle der virtuellen Akademie-Server wäre dies also: /vserv/x/ihre_domain/cgi-bin/ihr_skript.pl für ein cgi-Skript /vserv/x/ihre_domain/htdocs/datei.htm für eine HTML-Datei Dabei ist ihre_domain nicht unbedingt Ihr Domainname im Browser, sondern - wie bereits gesagt - das, was Sie beim FTP-Transport an Verzeichnisstruktur sehen können. x ist auf den Akademie-Servern der Anfangsbuchstabe Ihrer Domain. Wenn Sie innerhalb von htdocs/ Unterverzeichnisse anlegen, muß es natürlich entsprechend heißen: /vserv/x/ihre_domain/htdocs/unterverzeichnis/datei.htm für eine HTML-Datei Hierbei bitte unbedingt Groß-/Kleinschreibung beachten, die auf UNIX-Rechnern sehr wohl unterschieden wird! Als kleine Hilfestellung liegt in gepackter Form ein PERL-Skript bei, das den absoluten Serverpfad nicht benötigt, aber so ziemlich sämtliche Umgebungsvariablen ausgeben kann. Bitte beim Ausprobieren die Punkte unten beachten! |
|||||||||||||
Der Aufruf
von PERL-Skripten erfolgt entweder direkt über
einen Hyperlink oder von HTML-Dateien aus, in denen für ein Formular so etwas steht wie: <form action=" (Verweis auf Ihr cgi-Skript) " ...> Dieser Verweis muß einfach folgende Form haben: http://www.Ihr_Domain_Name/cgi-bin/ihr_skript.pl An dieser Stelle ist Ihr_Domain_Name wirklich das, was im Browser eingegeben werden muß. Für ihr_skript.pl setzen Sie natürlich den konkreten Namen des verwendeten Skripts ein - wieder unter Beachtung von Groß-/Kleinschreibung. |
|||||||||||||
Manchmal ist der Aufruf von HTML- oder Bilddateien von PERL-Skripten
aus erforderlich. Wenn man hierbei auf "Nummer Sicher" gehen will, gibt man den
vollständigen Pfad zu der betreffenden HTML-/Bilddatei an: http://www.Ihr_Domain_Name/ihr_logo.gif |
|||||||||||||
Bei der Namensvergabe für PERL-Skripte sollte man es
entweder bei der Endung .pl
belassen oder man kann sie auf .cgi
ändern. Natürlich muß sowohl im Skript wie auch ggf. in der aufrufenden HTML-Datei
konsistent mit den Namen umgegangen werden. |
|||||||||||||
Beim Hochladen von PERL-Skripten mittels FTP auf den Server
gibt es einen kleinen Stolperstrick: Sie müssen immer im ASCII-Modus
transferiert werden! Der Grund: Beim Dateitransport im normalerweise voreingestellten Binärmodus werden die Zeilenumbrüche am Ende jeder Zeile von Win(DOS) aus als CarriageReturn-Linefeed (ASC-10 ASC-13) übertragen, was den PERL-Interpreter komplett durcheinanderbringt, da auf Unix-Systemen der Zeilenumbruch nur durch ein Linefeed (ASC-10) dargestellt wird und der Wagenrücklauf in Scripten als illegales Zeichen interpretiert wird. |
|||||||||||||
Nach dem Hochladen
muß das PERL-Skript für jeden Benutzer ausführbar
gemacht werden. An der UNIX-Konsole würde man dazu eingeben: chmod 755 skriptname.pl In Ihrem FTP-Programm sollte es eine entsprechende Möglichkeit geben. Bei WS-FTP z.B. kann man den entsprechenden Befehl losschicken, indem man:
Auch das Verzeichnis, in dem das cgi-Script gespeichert ist, muß i.d.R. ausführbar gemacht werden.
Anmerkung: Auf den meisten Servern müssen Scripte in das Verzeichnis
cgi-bin (neben dem Verzeichnis htdocs) gespeichert werden |
|||||||||||||
Wenn in irgendwelche HTML-Dateien
permanent geschrieben werden soll (Gastbuch,
Bulletin-Board, Einkaufsliste ...), so muß auch dies wieder gestattet werden. Der
UNIX-Befehl dazu lautet: chmod 666 datei.html Im FTP-Programm verläuft es analog zu oben. Also z.b. für WS_FTP, indem man:
Anmerkung: I.d.R. müssen auch die Verzeichnisse, in die Dateien geschrieben werden sollen, auf chmod 777 gesetzt werden.
|
Ein Verzeichnis, in
dem ein ausführbares cgi-Script gespeichert ist, darf keine öffentliche Schreibberechtigung haben. Auslöser
dafür sind einleuchtende Sicherheitsgründe: Mit einem Fünfzeiler könnte jemand gesamte
Verzeichnisse ins elektronische Nirwana befördern. Und ein solches Script könnte ohne
Probleme in ein für öffentlichen Schreibzugriff freigegebenes Verzeichnis gespeichert
und dann ausgeführt werden. Hier schiebt deshalb der Server einen Riegel vor. |
Wenn die obigen
Punkte beachtet worden sind und beim Testen des Skripts gibt es die aussagekräftige Server-Fehlermeldung 500 (irgendein Skriptfehler) so
wird dies sehr oft daran liegen, daß bei der HTML-Ausgabe (irgendetwas möchte man
schließlich als Ergebnis des Skripts im Browser sehen) Zeichen verwendet worden sind, die
auch als PERL-Steuerzeichen verwendet worden sind. Die wichtigsten dieser Zeichen sind:
Natürlich werden diese Zeichen auch im
HTML-Code benötigt. Damit der PERL-Interpreter nicht durcheinanderkommt, muß ihnen dann
jeweils ein Backslash ( \ )vorangestellt werden. Für eine als Verweis in einer HTML-Datei
angegebenen email-Adresse liest sich das dann etwa folgendermaßen: |
Kontakt |
nach oben |
Das war's schon als kleine Hilfestellung zur Benutzung von PERL-Skripten. Sollten alle Stricke reißen, steht der Autor dieses Leitfadens gerne für Fragen zur Verfügung. Eine kleine Bitte dabei aber vorab: Obige Punkte wirklich gründlich durchgehen - Danke!
Therese Telepski
support@gb-direkt.de
http://www.gb-direkt.de