|
![ein Kapitel weiter](../weiter.gif)
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 weiter](../weiter.gif)
© 2001,2002 Jürgen Wolf
|