사용자가 버튼을 여러 번 클릭하지 않도록하는 가장 간단한 방법은 페이지에 자바 스크립트를 추가하는 것입니다. 그것은 스크립트 나 예를 들어 F5을 누르면 작동하지 않습니다.
<input type="submit" name="go" id="go" value="go" onclick="this.disabled='disabled'"/>
는 또한 사용자와 타임 스탬프의 IP 주소를 보유하고있는 서버의 로그 파일/데이터베이스를 작성하고, 자신이 이미 제출 여부를 확인할 수 있습니다. 쿠키를 설정하고 확인하는 것 외에는 그렇게하는 것이 좋습니다.
쿠키의 경우 CGI
doc의 cookies을 참조하십시오. 간단한 예 :
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',
));
}
고맙습니다! 내 CGI에서 제출자의 IP를 어디에서 얻을 수 있습니까? CGI 유형 객체의 어느 부분에 있을까요? –
'$ q-> remote_addr()'- [FETCHING ENVIRONMENT VARIABLES] (http://search.cpan.org/dist/CGI/lib/CGI.pm#FETCHING_ENVIRONMENT_VARIABLES)를 참조하십시오. – simbabque