ein Kapitel zurück                                           ein Kapitel weiter

So siehts aus und funktioniert es

Wollen sie ein Gästebuch auf Ihrer Webseite erstellen wo sich Ihre Gäste verewigen können, benötigen wir mindestens 3 Elemente....

  • ein Formular in dem alle Daten eingeben werden
  • das CGI-Skript welches die Daten verarbeitet
  • eine HTML-Datei für die Anzeige des Gästebuches

Zuerst also wieder das HTML-Formular zum Ausfüllen der Daten....

<html>
<head>
  <title>Gästebucheintrags-Formular</title>
</head>
<body>
<center><h1>Hier können sie sich ins Gästebuch eintragen</h1></center>

<form action="http://localhost/cgi-bin/gaestebuch.cgi" method="post">
<p>
<pre>Ihr Name : <input type="text" name="name" maxlength=30></pre><br>
<pre>E-Mail   : <input type="text" name="email" maxlength=30></pre><br>
<pre>Land     : <select name="land"><option>Deutschland
                                  <option>Schweiz
                                  <option>Östereich
                                  <option></select></pre><br>
<pre>Homepage : <input type="text" name="homepage" maxlength=40></pre><br>
<pre>Kommentar: <br><br><textarea name="message" rows=5 cols=50></textarea></pre><br>
<pre><input type="submit" name="Eintragen"><input type="reset" name="Zurücksetzen"></pre>
</p>
</form>

</body>
</html>  

Nun kommen wir zum CGI-Skript welches die Daten aus dem Formular auswerten soll (name,email,land, homepage und message) und in eine Datei (*.html,*.txt) schreiben soll.

Um zu Verhindern das 2 Besucher gleichzeitig in diese Datei schreiben benutzen wir das Modul Fcntl für Schreibsperre während ein Besucher gerade schreibt, für alle anderen. Natürlich überprüfen wir auch wieder alle Parameter auf Richtigkeit. Auch hier wird wieder auf das Design verzichtet und nur reines HTML bzw. Perl verwendet. Die Optik können sie sich ja selbst anpassen..............

#!/usr/bin/perl

use CGI;
use CGI::Carp qw(fatalsToBrowser);
use Fcntl qw(:flock);

$q=new CGI;
$ok=1;
@message="";
#Pfad zum Gästebuch
$buch="/usr/local/httpd/htdocs/gaeste.html"; #Anpassen
#Zeit und Datum
$t=time();
$date_time=localtime($t);

#Parameter einlesen
$name=$q->param('name');
$email=$q->param('email');
$land=$q->param('land');
$home=$q->param('homepage');
$msg=$q->param('message');

#Parameter überprüfen
if(!$name)
  { push(@message,"Es wurde keine Name angegeben<br>"); $ok=0;  }
if(length $name > 200)
  { push(@message,"Ihr Name scheint etwas lang zu sein<br>"); $ok=0; }
if(!$email)
  { push(@message, "Sie haben keine E-Mailadresse eingegeben<br>"); $ok=0; }
if($email!~ /^.*?(\@).*?(\.).*?/)
  { push(@message,"$email (!) Dies scheint keine E-Mailadresse zu sein<br>"); $ok=0;}
if(!$home)
  { $home="keine Homepage"; }
if(!$msg)
  {  push(@message,"Sie haben keinen Text in Feld geschrieben<br>"); $ok=0; }
if(length $msg > 2000)
  { push(@message, "Der Text scheint mir etwas zu lang zu sein<br>"); $ok=0; }


#Waren alle Parameter ok können wir einen Eintrag machen
#Öffnen zum schreiben.....
if($ok==1){
 open(BOOK, "+< $buch") or die "Konnte Gaestebuch nicht öffnen?!?!\n";
 flock(BOOK, LOCK_EX); #Schreibsperre
 seek(BOOK, -14,2);    #Filedeskriptor vor </body></html>
 print BOOK "<hr><br>";
 print BOOK "<p><pre>Eintrag vom : $date_time , Geschrieben von : <a href=\"mailto:$email\">$name</a>";
 print BOOK " aus $land , <a href=\"$home\">Hompage</a><br><br></pre></p>";
 print BOOK " <p>$msg</p></body></html>";
 close(BOOK);

 #Bestätigung für den Besucher
 print $q->header;
 print "<html><head><title>Danke für den Eintrag</title></head><body><center>";
 print "Vielen Dank für Ihren Eintrag ins Gästebuch<br><br>";
 print "<a href=\"http://localhost/gaeste.html\">Hier</a> können sie sich alle Einträge anssehen";
 print "</center></body></html>";
 }
#Mit der Eingabe stimmt was nicht
else{
 print $q->header;
 print "<html><head><title>Fehler bei der Eingabe</title></head><body><center>";
 print "<b>Folgende Fehler traten bei Ihrer Eingabe auf : </b><br><br>";
 print "@message";
  print "</center></body></html>";
 }  

Nun benötigen wir nur noch die Datei gaeste.html wo die Daten reingeschrieben werden. Speichern sie diese Datei bitte in Ihrem Webverzeichnis wo sich die Webseiten befinden. Hier die Html-Datei in der geschrieben wird............

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
  <title>Gästebuch</title>
</head>
<body>
<center><h1>Hier sind die Einträge im Gästebuch</h1></center><br>
</body></html>  

Nun da sie das Grundgerüst des Gästebuches haben können sie munter draufrumprobieren und viele Sinnvolle Funktionen als auch Buntes einbauen ;)

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf