![ein Kapitel weiter](../weiter.gif)
Das machen wir in diesem Kapitel (so siehts aus und funktionierts)
So nachdem wir schon ein bisschen Gefühl für CGI-Skripts bekommen haben wollen
wir mit Interaktion anfangen. Einfache Hallo Welt auf dem Bildschirm auszugeben
können wir mit jeder einfachen HTML-Datei genauso erledigen. Schließlich ist das ja
auch der Sinn von CGI-Skripts.
Der weitere Verlauf setzt übrigens voraus das sie sich ein bisschen mit HTML auskennen.
Falls nicht laden sie sich SelfHTML von Stefan Münz aus dem Internet herunter.
Sie finden dies unter http://www.teamone.de/selfhtml/
Ich werde nicht zu den einzelnen Bauteilen von HTML eingehen.
Wir wollen also eine Einfache HTML-Seite erstellen in der wir einen Text eingeben.
Anschließend wollen wir ein CGI-Skript in Perl schreiben womit wir diese Eingabe
auswerten. Zuerst also die HTML-Datei...........
<html>
<head>
<title>Eine einfache Auswertung das Namens</title>
</head>
<body>
<h1><center><b><u> GET-Formular</u></b></center></h1><br><br>
<table width="50%" cellspacing=5 border=0
cellpadding=5 align="center" bgcolor="yellow">
<tr align="center " valign="center">
<form action="http://localhost/cgi-bin/auswert.pl" method=get>
<center><b>Bitte geben sie ihren Namen ein : </b>
<input name="Textfeld" size="20"> </input>
<input type=submit value="abschicken"></center>
</form>
</tr>
</table>
</body>
</html>
Diese HTML-Datei können sie in einem Verzeichnis Ihrer Wahl speichern. Und auch
gleich in einem Browser ansehen wenn sie wollen. Ungeduldig wie sie sind haben sie
wahrscheinlich schon den Abschicken Button gedrückt und als Fehlermeldung erhalten.......
The requestet URL /cgi-bin/auswert.cgi was not found on this server.
Klar das CGI-Skript auswert.cgi oder auswert.pl haben wir ja noch nicht geschrieben. Bei der Eingabe........
<input name="Textfeld" size="20">
...übergeben wir das "Textfeld" an unseren Server der dies Auswertet wenn wir den
Abschicken-Button gedrückt haben. Gesendet wird diese Eingabe an.........
<form action="http://localhost/cgi-bin/auswert.pl" method=get>
...mit der Methode GET. Mit action rufen wir das Skript auswert.pl
auf.
Was macht die GET-Methode?
Bei dieser Methode hängt der Browser die Zeichenketten am Ende der URL an......
http://localhost/cgi-bin/auswert.pl?Textfeld=hallo
Der Server ist dann Verantwortlich diese Zeichenkette wieder zu entfernen und übergibt
diese an QUERY_STRING......
QUERY_STRING = Textfeld=hallo
Jetzt sind wir an der Reihen mit unserem CGI-Programm QUERY_STRING auszuwerten.
Diese GET-Möglichkeit stellt die einfachste da. Der Nachteil daran ist aber, dass
damit nur Speicherplatz für 1024Bytes vorhanden sind. Also 1024
Zeichen. Für z.B. einer Suchmaschine ausreichend. Aber für eine Formmail nicht. Aber dazu
kommen wir gleich. Jetzt wollen wir aber unser auswert.pl Skript schreiben..........
#!/usr/bin/perl -w
$daten = $ENV{'QUERY_STRING'};
print <<HTML;
Content-type: text/html
<html>
<head>
<title>AUSWERTUNG IHRER EINGABE</title>
</head>
<body>
<center>
<h1><b>Hallo $daten</b></h1><br>
CGI-Skripts zu schreiben ist doch gar nicht so schwer, oder?
</center>
<body>
</html>
HTML
Speichern sie diese Skript im cgi-bin-Verzeichnis ihres Webservers und ändern sie die
Zugriffrechte wie gewohnt. Jetzt könne sie die HTML-Seite starten und Ihren Namen
eingeben. Beispielsweise: James Bond
Nun hat die URL folgendes aussehen.........
http://localhost/cgi-bin/auswert.pl?Textfeld=James+Bond
Mittels.......
$daten = $ENV{'QUERY_STRING'};
...übergeben wir die Eingabe die wir gemacht haben an unsere Variable $daten. Die wir
anschließend ausgeben. Leider haben wir noch nicht das gewünschte Ergebnis. Die
Ausgabe hat folgendes Aussehen.....
Hallo Textfeld=James+Bond
Und wozu haben wir Perl gelernt? Also dekodieren wir den Inhalt von QUERY_STRING mit
regulären Ausdrücken. Hier nun die komplette Lösung von auswert.pl.........
#!/usr/bin/perl -w
$daten = $ENV{'QUERY_STRING'};
$daten =~ s/\+/ /g;
$daten =~ s/%([0-9A-H]{2})/pack('C',hex($1))/eg;
$daten =~ s/Textfeld=/ /g;
print <<HTML; Content-type: text/html
<html>
<head>
<title>AUSWERTUNG IHRER EINGABE</title>
</head>
<body>
<center><h1><b>Hallo $daten</b></h1><br>
CGI-Skripts zu schreiben ist doch gar nicht so schwer, oder?
</center>
<body>
</html>
HTML
Nun wird so manch einer über das Skript protestieren, da es doch hieß CGI-Skripts
seien einfach. Nun wollen wir es uns einfach machen. Dazu brauchen wir nur das
Perl-Modul CGI.pm verwenden. Hier das auswert.pl Skript mit dem Modul CGI.........
#!/usr/bin/perl -w
use CGI qw(:standard);
use strict;
my $q=new CGI;
print $q->header;
my $name = param('Textfeld');
print "<html><head><title>AUSWERTUNG IHRER EINGABE</title></head>";
print "<body><center><h1><b>Hallo $name</b></h1><br>";
print "CGI-Skripts zu schreiben ist doch gar nicht so schwer, oder?</center>";
print "<body></html>";
Wir brauchen hier nur mit Hilfe der Funktion param() nach dem 'name' - Eingabetext
fragen. Auch das Schreiben des Headers können wir uns sparen. Diese geschieht mit der
Funktion header in der letzten Zeile.
![ein Kapitel weiter](../weiter.gif)
© 2001,2002 Jürgen Wolf
|