Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Gästebuch
Frage
Hallo,
ich habe mir ein Gästebuch heruntergeladen. Doch wenn ich keinen name usw eingebe, erscheinen keine Fehlermeldungen. Ich möchte gerne Fehlermeldungen in das Script einbauen, doch wie mache ich daß?
Hier ist der Quelltext:
#!/usr/bin/perl
#
# Version 2.0
#
# Gaestebuch von Markus ...
# Erweitert von Sandro Sonntag (kontakt@ultrasonic-net.de/www.ultrasonic-net.de)
################################################################
#
# Fixes:
#
# - Zeilenumbrüche jezt auch sichtbar
# - Globale Header und Footer Variaben mit Ermoeglichung von Sonderzeichen ("@)
#
# - Erweiterung um Admin Modus (Ediren und Loeschen von Datensaetzen)
#
# Um sich als Admin einzuloggen "jgast.pl?Mode=Admin" eingeben !
# Bitte ändern Sie das Passwort
#################################################################
#
# Umgebungsvariablen (Bitte anpassen)
#################################################################
$scriptname = "gb.pl"; #(Programmdatei)
$datainame = "gb.dat"; #Datenbank (wird automatisch erstellt!)
$login = "pwd"; #Passwort fuer Adminbereich
$z = "0";
# Heder HTML des Guestbooks #Bitte ändern !!!
my $Header = <<"EOM";
Guestbook
EOM
#Header HTML des Admin Bereichs
my $a_header = <<"EOM";
Guestbook
Administration des Guestbooks:
EOM
#Footer HTML des Admin Bereiches
my $a_footer = <<"EOM";
EOM # Sie habens geschafft ######################################################################################### # Passwortabfrage HTML des Admin Bereiches my $a_passwort = <<"EOM";
Bitte geben Sie das Passwort ein:
EOM
# Proccessing Unit
#############################################################################################################
if ($ENV{REQUEST_METHOD} eq "GET")
{
$buffer = $ENV{QUERY_STRING};
}
else
{
read(STDIN, $buffer, $ENV {CONTENT_LENGTH});
}
@nvpairs = split(/&/,$buffer);
foreach $pair (@nvpairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$in{$name} = $value;
}
print "Content-type: text/html \n\n";
# Soll die Systemzeit uebergeben werden oder die Gepostete Zeit ?
if ($in{year} ne "") {
$year=$in{year};
$month=$in{month};
$mday=$in{mday};
$hour=$in{hour};
$min=$in{min};
$sec=$in{sec};
}
else {
$time = time;
($mday,$month,$year,$hour,$min,$sec) = (localtime($time))[3,4,5,2,1,0];
$month = $month+1;
$year = $year+1900;
if ($month < 10){$month = "0$month"};
if ($mday < 10){$mday = "0$mday"};
if ($sec < 10) {$sec = "0$sec"};
if ($min < 10) {$min = "0$min"};
if ($hour < 10){$hour = "0$hour"};
}
$ausgabe = "$year$month$mday$hour$min$sec|$in{author}|$in{email}|$in{content}|$in{url}";
$ausgabe =~ s/\n/³/g;
$ausgabe =~ s/&/&/g;
$ausgabe =~ s/>/g;
$ausgabe =~ s/";
if ($a > $l){print "<< Vorige Seite";}else{
print " Vorige Seite";};
print " ";
if ($a+$l-11 <= $l){print " Nächste Seite >>";}else{
print " Nächste Seite";};
print "
";
print "
"; if ($a > $l){print "<< Vorige Seite ";}else{ print " << Vorige Seite";}; print " "; if ($a+$l-11 <= $l){print " Nächste Seite >>
";}else{ print " Naechste Seite >>
";}; sub AddEntry { local($Entry) = @_; $check = 0; open (DATA,$datainame); @data = ; close (DATA); open (DATA,">$datainame"); foreach $line (@data) { if ($line > $Entry) { print DATA "$line"; } else { if ($check == 0) { print DATA "$Entry"; print DATA "$line"; $check = 1; } else { print DATA "$line"; } } } if ($check == 0) { print DATA "$Entry"; } close (DATA); }; sub zahler{ open (DATA,$datainame); @data = ; close (DATA); foreach $line (@data) { $line =~ s/\n//g; $line =~ s/&/&/g; $line =~ s/>/g; $line =~ s/"; print $a_passwort; print $a_footer; } } else { print $a_header; print $a_passwort; print $a_footer; } } sub admin # Der Admin Bereich { print $a_header; print "";
if ($z==0) {
print "
Keine Datensaetze vorhanden !!!
"; } else { if ($a > $l){print "<< Vorige Seite ";}else{ print " << Vorige Seite";}; print " "; if ($a+$l-11 <= $l){print " Naechste Seite >>";}else{ print " Naechste Seite >>";}; } print "
";
print $a_footer;
}
sub edit # Hier werden die Datensaetze Ediert
{
if ($in{author} eq "")
{
print $a_header;
open (DATA,$datainame);
@data = ;
close (DATA);
foreach $line (@data) {
$line =~ s/\n//g;
$line =~ s/³//g;
$line =~ s/&/&/g;
$line =~ s/>/g;
$line =~ s/ ";
print $a_footer;
};
$z=$z - 1;
};
}
else
{
local($Entry) = @_;
open (DATA,$datainame);
@data = ;
close (DATA);
open (DATA,">$datainame");
foreach $line (@data)
{
if ($z eq $in{number}) {
print DATA "$Entry";
}
else {
print DATA "$line";
}
$z=$z-1;
}
close (DATA);
&zahler;
goto &admin;
}
}
sub del # Hier werden Die Datensaetze geloescht
{
local($Entry) = @_;
open (DATA,$datainame);
@data = ;
close (DATA);
open (DATA,">$datainame");
foreach $line (@data)
{
if ($z eq $in{number}) {
}
else {
print DATA "$line";
}
$z=$z-1;
}
close (DATA);
&zahler;
goto &admin;
}
Über eine Antwort würde ich mich sehr freuen.
Gruß
Udo
|
Info:
EOM
# Hier wird der die Anzahl der Einträge angezeigt (deshab gesplittet)
my $Header2 = <<"EOM";
|
|
|
Administration des Guestbooks:
EOM
#Footer HTML des Admin Bereiches
my $a_footer = <<"EOM";
EOM # Sie habens geschafft ######################################################################################### # Passwortabfrage HTML des Admin Bereiches my $a_passwort = <<"EOM";
| $z | Datum: $jahr-$monat-$tag $stunden:$minuten:$sekunden "; print "$author ("; if ($email eq ""){print "keine E-mail";}else{ print "$email ";}; print " / "; if ($url ne "http://") {print "$url";}else {print " keine Homepage ";}; print ") schrieb: $content | ||
"; if ($a > $l){print "<< Vorige Seite ";}else{ print " << Vorige Seite";}; print " "; if ($a+$l-11 <= $l){print " Nächste Seite >>
";}else{ print " Naechste Seite >>
";}; sub AddEntry { local($Entry) = @_; $check = 0; open (DATA,$datainame); @data = ; close (DATA); open (DATA,">$datainame"); foreach $line (@data) { if ($line > $Entry) { print DATA "$line"; } else { if ($check == 0) { print DATA "$Entry"; print DATA "$line"; $check = 1; } else { print DATA "$line"; } } } if ($check == 0) { print DATA "$Entry"; } close (DATA); }; sub zahler{ open (DATA,$datainame); @data = ; close (DATA); foreach $line (@data) { $line =~ s/\n//g; $line =~ s/&/&/g; $line =~ s/>/g; $line =~ s/"; print $a_passwort; print $a_footer; } } else { print $a_header; print $a_passwort; print $a_footer; } } sub admin # Der Admin Bereich { print $a_header; print "
Keine Datensaetze vorhanden !!!
"; } else { if ($a > $l){print "<< Vorige Seite ";}else{ print " << Vorige Seite";}; print " "; if ($a+$l-11 <= $l){print " Naechste Seite >>";}else{ print " Naechste Seite >>";}; } print "
| $z | "; print "Datum: $jahr-$monat-$tag $stunden:$minuten:$sekunden "; print "$author ("; if ($email eq ""){print "keine E-mail";}else{ print "$email ";}; print " / "; if ($url ne "http://") {print "$url";}else {print " keine Homepage "}; print ") schrieb: $content | ";
print ""; print ""; print " | "; } } }; print "|
Antwort 1 von Gerri
Scha Dir doch ein anderes Gästebuch an, wie das UGB von Ultima.
Das ist recht gut und kostet nichts.
Auf http://www.scriptkeeper.de findest Du noch ein paar Erweiterungen für das Script.
Da das Script leider nicht mehr downgeloadet werden kann, maile ichs Dir rasch.
Das ist recht gut und kostet nichts.
Auf http://www.scriptkeeper.de findest Du noch ein paar Erweiterungen für das Script.
Da das Script leider nicht mehr downgeloadet werden kann, maile ichs Dir rasch.
Antwort 2 von S. Ney
Beim senden s.o. sind ein paar Zeichen verschwunden!!!!
$in{e_email} einfache Anfuehrungsstriche vor und nach e_mail!!
Mal testen, hier waren sie drin.
Sind nicht durch die malicous Code Prüfung durchgekommen. Fehlt in Deinem Skript uebrigens auch!!!
Ausserdem ist das Eingebefenster hier zu klein!
Gruss
Stefan
$in{e_email} einfache Anfuehrungsstriche vor und nach e_mail!!
Mal testen, hier waren sie drin.
Sind nicht durch die malicous Code Prüfung durchgekommen. Fehlt in Deinem Skript uebrigens auch!!!
Ausserdem ist das Eingebefenster hier zu klein!
Gruss
Stefan
Antwort 3 von S. Ney
Beim senden s.o. sind ein paar Zeichen verschwunden!!!!
$in{e_email} einfache Anfuehrungsstriche vor und nach e_mail!!
Mal testen, hier waren sie drin.
Sind nicht durch die malicous Code Prüfung durchgekommen. Fehlt in Deinem Skript uebrigens auch!!!
Ausserdem ist das Eingebefenster hier zu klein!
Gruss
Stefan
$in{e_email} einfache Anfuehrungsstriche vor und nach e_mail!!
Mal testen, hier waren sie drin.
Sind nicht durch die malicous Code Prüfung durchgekommen. Fehlt in Deinem Skript uebrigens auch!!!
Ausserdem ist das Eingebefenster hier zu klein!
Gruss
Stefan
Antwort 4 von Udo-Luetkemeier
Hallo,
wo genau soll ich daß einfügen @S. Ney?
Gruß
Udo
wo genau soll ich daß einfügen @S. Ney?
Gruß
Udo

