ユーザーがボタンを何度もクリックするのを避ける最も簡単な方法は、ページに Javascript を追加することです。これは、スクリプトやF5.
<input type="submit" name="go" id="go" value="go" onclick="this.disabled='disabled'"/>
また、ユーザーの IP アドレスとタイムスタンプを保持するログ ファイル/データベースをサーバーに書き込み、ユーザーが既に送信されているかどうかを確認することもできます。Cookie の設定と確認に加えて、これを行うのがおそらく最善の方法です。
Cookie については、ドキュメントのCookieを参照してください。CGI
簡単な例:
use strict; use warnings;
use CGI;
my $q = new CGI;
my $submitted = 0;
if ($q->cookie('submitted ')) {
$submitted = 1;
}
# Here you could place the file/db check to also set $voted
if ($submitted) {
print $q->header('text/plain');
print "You have already submitted!";
} else {
# Do stuff with the form, like $q->param('foo')...
# Once you're done, place the cookie
print $q->header(
-type => 'text/plain',
-cookie => $q->cookie(
-name => 'submitted',
-value => 1,
-expires => '+1y',
));
}