|
|||||||
![]() |
Tutorial - Kapitel 9a: Beispiel: virtuelles schwarzes BrettVoraussetzungen für dieses Kapitel
Source-Code inkl. ErklärungenDie Erklärungen zu diesem Script sind direkt im Sourcecode. Es empfiehlt sich, dieses Script einmal auf dem Webserver laufen zu lassen, um seine genaue Funktion zu erkennen. Bei allfälligen Fragen können Sie in den entsprechenden Kapiteln des Tutorials sicher eine Antwort finden. brett.cgi #!/usr/bin/perl # Beispiel-Script: virtuelles schwarzes Brett # Kommentare befinden sich direkt im Source-Code # Autor: Jürg Sommer / Letzte Änderung: 16. August 2003 # Dateiname der Datendatei (hierhin werden die Einträge gespeichert) festlegen. my $dataFile="data.dat"; # HTML-Grundgerüst für Seite print "Content-type: text/html\n\n"; print "<html><head><title>virtuelles schwarzes Brett</title>\n"; print "<style type=\"text/css\">body {font-family:Verdana,Arial,Univers,Helvetica;}</style>\n"; print "</head><body>\n"; print "<h1>virtuelles schwarzes Brett</h1>\n"; # Formulardaten einlesen my %FORM; &readForm; # Kommentar übergeben? Wenn ja: abspeichern if ($FORM{"texteingabe"} ne "") { # Datei zum schreiben öffnen (anhängen) open(FILE,">>".$dataFile); # Zeilenumbrüche löschen. # Regular Expression. Wird zu einem späteren Zeitpunkt erläutert # Syntax in Kürze: Variable =~ s/suchen/ersetzen/parameter; $FORM{"texteingabe"} =~ s/\r//g; $FORM{"texteingabe"} =~ s/\n//g; # $FORM{"texteingabe"} in Datei schreiben print FILE "$FORM{texteingabe}\n"; # Datei schliessen close(FILE); } # überprüfen, ob Datei schon existiert if (-e $dataFile) { # Datei existiert # Datei zum lesen öffnen. Dateihandler: FILE open(FILE,$dataFile); # Datei zeilenweise verarbeiten: while (<FILE>) { # Trennlinie <hr> und dann die aktuelle Zeile ausgeben print "<hr>$_\n"; } # Trennlnie <hr> am Schluss print "<hr>\n"; } else { # Datei existiert nicht # Text ausgeben print "<hr>Es sind noch keine Einträge vorhanden...<hr>"; } # HTML-Text für neuen Eintrag print "<br/><br/>Verfassen Sie einen neuen Eintrag! HTML-Code erlaubt."; # Formular für neue Eingabe erstellen. $ENV{SCRIPT_NAME} enthält Pfad und Name zum CGI-Script print "<form action=\"$ENV{SCRIPT_NAME}\" method=post>"; print "<textarea name=\"texteingabe\" cols=50 rows=5></textarea><br>"; print "<input type=submit value=\"Text abschicken\">"; # HTML-Seite abschliessen print "</body></html>"; ########################################################################### sub readForm { # Parameter in %FORM einlesen my ($buffer,@pairs,@pair,$i); if ($ENV{'REQUEST_METHOD'} eq "GET") { $buffer = $ENV{'QUERY_STRING'}; } else { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } @pairs = split(/&/, $buffer); foreach (@pairs) { @pair = split(/=/, $_, 2); for ($i=0;$i<2;$i++) { $pair[$i] =~ tr/+/ /; $pair[$i] =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; } $FORM{$pair[0]} = $pair[1]; } } Wie geht's weiter?Nachdem Sie dieses Beispiel genauer betrachtet haben, können Sie wieder zurück zum Kapitel 9 des Tutorials.
|
||||||