#!/usr/bin/perl -w use CGI; use CGI::Carp qw(fatalsToBrowser); $q = CGI::new(); $datafile="data.txt"; $smilyDir="../smilys/"; @alteEintraege=(); @neuerEintrag=(); $anzahlEintraege=0; $time=0; @smilyCommands=(':\)',':\(',':D',':mad:',';\)',':P',':rolleyes:',':cool:',':confused:',':eek:',':angry:',':smoke:',':beer:',':yeah:'); @smilyGifs=('happy.gif','sad.gif','laughin.gif','mad.gif','blink.gif','haha.gif','rolleyes.gif','cool.gif','confused.gif',             'eek.gif','angry.gif','smoke.gif','beer.gif','yeah.gif'); $name=$q->param("name"); $email=$q->param("email"); $url=$q->param("url"); $beitrag=$param("beitrag"); if($name eq "" || $beitrag eq "") { print "Content-type: text/html"; print "Error"; print ""; print "
"; print "Fehler: es wurde kein Name oder kein Betragstext eingegeben!"; print "
"; print ""; print ""; } else { open(FILE,"<".$datafile) || die "Fehler beim Öffnen der Datei data.txt"; flock(FILE,1); @alteEintraege=; close(FILE); $anzahlEintraege=&getNumberOfEntries(@alteEintraege); &filterHTML($name,$email,$url,$beitrag); &setSmilyTags($beitrag); $time=&getTime; ++$anzahlEintraege; push(@neuerEintrag, "\n"); push(@neuerEintrag, "\n"); push(@neuerEintrag, "\n"); push(@neuerEintrag, "\n"); push(@neuerEintrag, "
$name schrieb am $time:
\n"); #wenn Format der E-Mail Adresse korrekt if(($email =~ /^([a-zA-Z0-9][a-zA-Z_0-9-\.]*)(\@)([a-zA-Z0-9][a-zA-Z_0-9-\.]*[a-zA-Z0-9])(\.)([a-zA-Z0-9]*)$/)){   push(@neuerEintrag, "
\n");       } #wenn Format der URL korrekt if($url=~/^http:\/\/[a-zA-Z0-9][a-zA-Z_0-9-\.]*(\.)[a-zA-Z0-9][a-zA-Z_0-9-\.]*/)       {        push(@neuerEintrag, "\n");              } push(@neuerEintrag, "
$beitrag\n"); push(@neuerEintrag, "
\n"); unshift(@alteEintraege, @neuerEintrag); open(FILE,">".$datafile) || die "Fehler beim Öffnen der Datei data.txt"; flock(FILE,2); foreach(@alteEintraege) {  print FILE $_; } close(FILE); } ###Subroutines sub getNumberOfEntries { $number=0; @zeilen=@_;  foreach(@zeilen)  {  if(/\n/)  {   $number=$1;   last;  }  } return $number; } sub filterHTML { foreach(@_) {  $_ =~ s/<[^>]*?>//g;  #HTML filtern  $_ =~ s///g;   #SSI und Script Tags filtern  $_ =~ s/"/"/g;   #Anführungszeichen " zu "   $_ =~ s/\r//g;    #Returns (Wagenrücklauf) entfernen   $_ =~ s/\n/
/g;   #Zeilenumbruch zu
umwandeln } } sub setSmilyTags { for($zaehler=0;$zaehler<@smilyCommands;$zaehler++) {  $ersatztext="";  if($beitrag=~/$smilyCommands[$zaehler]/)  {   $ersatztext="";   $beitrag=~s/$smilyCommands[$zaehler]/$ersatztext/gi;  } } } sub getTime { ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,  $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time); $Monat+=1; $Monat = $Monat < 10 ? $Monat = "0".$Monat : $Monat; $Monatstag = $Monatstag < 10 ? $Monatstag = "0".$Monatstag : $Monatstag; $Stunden = $Stunden < 10 ? $Stunden = "0".$Stunden : $Stunden; $Minuten = $Minuten < 10 ? $Minuten = "0".$Minuten : $Minuten; $Jahr+=1900; return "$Monatstag.$Monat.$Jahr um $Stunden:$Minuten Uhr"; }