Hallo,
ich hab sowas bei meinem selbstgebastelten Forum so realisiert :
Ich setze einfach ein Cookie, welches nach 30 Sekunden wieder abläuft und frage eben beim speichern des Postings ab, ob das Cookie existiert (den Rückgabewert 1 zurückgibt) oder nicht :
if ($action eq 'savetopic') {
my $topic = $query->param('topic');
my $text = $query->param('text');
my $name = $query->param('name');
my $email = $query->param('email');
my $hpaddress = $query->param('hpaddress');
my $icq = $query->param('icq');
my $sessioncookie = '';
if (readsessioncookie()) {
print $query->redirect("$url");
} else {
savesessioncookie($sessioncookie);
savetopic($topic,$text,$name,$email,$hpaddress,$icq);
writecookie($name,$email,$hpaddress,$icq,$sessioncookie);
}
}
--------------------- Cookie setzen -----------------
sub savesessioncookie {
my $sessioncookie = shift;
$$sessioncookie = $query->cookie(-name => 'sessioncookie',
-value => 'sessioncookie',
-expires => '+30s',
-path => '/');
}
------------- Cookie abfragen ---------------
sub readsessioncookie {
my %cookies = fetch CGI::Cookie;
foreach (keys %cookies) {
if (($cookies{$_}) =~ /sessioncookie/) {
return 1;
}
}
}
---------------------------
Der einzige Nachteil ist natürlich, daß der User Cookies aktiviert haben muss, aber ich glaube, daß es eigentlich eher unwahrscheinlich ist, daß jemand, der Cookies nicht aktiviert hat, unbedingt so viele Doppelpostings macht. Ausserdem ist diese Lösung meiner Meinung nach effizienter.