|    
 
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 BondNun 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.
       
 © 2001,2002 Jürgen Wolf
 |