Hallo Alain.
und wie erklärst Du Dir das,dass der eintrag ins gästebuch nicht erfolgt ,wenn &dead ausgeführt wird,jedoch aber trotzdem in die LOG,obwohl "hotmail.net"(was sowiso ne ungültige email ist) bereits in der LOG steht?
Also in deinem Code habe ich nirgendwo einen Eintrag in ein Gästebuch feststellen können, nur in eine Logfile. Ich mach mal ein Beispiel:
my $logfile = "/home/guestbook/contlog.txt";
my $retcode = check_log();
if($retcode == 1) {
dead("Ein-/Ausgabefehler beim Öffnen der Logdatei.");
exit(1);
}
else if($retcode == 2) {
dead("User existiert bereits");
exit(1);
}
else {
# Eintrag ins Gästebuch
}
Fehlercodes:
0: alles in Ordnung
1: Fehler beim Öffnen
2: User existiert
sub check_log {
open(LOG,"+<$logfile") || return 1;
flock(LOG,LOCK_EX);
while (<LOG>){
chomp($_);
if($_ eq $FORM{'username'}) {
flock(LOG,LOCK_UN);
close(LOG);
return 2;
}
}
seek (LOG, 0, 2);
print LOG "$FORM{'username'}\n";
flock(LOG,LOCK_UN);
close (LOG);
return 0;
}
So sollte es vom Prinzip her funktionieren. Btw, warst du nicht der Frager zum Thema Tainted-Modus und exit aus Subs heraus?
Freundschaft!
Siechfred
Hinweis an alle Karnevalsmuffel: Aschermittwoch ist alles vorbei.