Hi,
So hier mal der Codeschnipsel, den ich jetzt geproggt habe, doch leider hab ich ein Problem, wenn ich den Skript aufrufe, dann sollte er ja eigentlich die IP und die Zeit in die DB schreiben, doch wenn ich ihn in Binnen 20 sek wieder aufrufe, dann, funktioniert das ganze nicht so wie es soll!
Bitte um genaue Fehlerbeschreibung, da ich eigentlich keinen Fehler entdecken kann. Allerdings habe ich das auch nicht getestet, vielleicht ist's nur eine Kleinigkeit, ein Typo o. ä., deshalb meine Frage nach der genauen Fehlerbeschreibung.
Außerdem bin ich auch nicht gerade _der_ Perlguru! ;-)
Lock_DB binden
my $dbfile = '/tmp/lockip.db';
my %lockip;
tie(%lockip, 'DB_File', $dbfile, O_RDWR|O_CREAT, 0777)
777 ist aber nicht gerade die feine Art, oder? ;-)
Das folgende ist eigentlich als getrennte Funktion besser, wie auch von Rolf implementiert.
#pruefen ob eine IP Adresse gelockt ist und ggf. locken
my $cip = $ENV{'REMOTE_ADDR'};
my $ctime = time;
Beim erstem Aufruf ist in der DB natürlich nichts drin, wie da Perl drauf reagiert, insbesondere was dann in $timediff ist mußt Du mal nahchscauen (print hilft da ausnahmsweise ganz gut ;-)
my $timediff = $ctime - $lockip{$cip};
if ($timediff > $locktime)
{
print "Du Hast die Erlaubniss wieder abzustimmen";
Ah! Die Anführungsstriche sind hier nicht ganz richtig! Lag's evt daran?
$lockip{'$cip'} = $ctime;
so short
Christoph Zurnieden