ein Kapitel zurück                                           ein Kapitel weiter

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 zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf