my @captchas = ( #capID,Frage,Antwort "123456#Farbe des Himmels#blau", "567851#Summe aus Drei und Sieben#10", "918265#Fünf mal Zwei minus Drei#7", "218153#Ein Cirrus ist eine ...#Wolke" ); sub generate_captcha { my $zufallsindex = int rand scalar @captchas; my ($capid,$frage,$antwort) = split /#/,$captchas[$zufallsindex]; return ($capid,$frage,$antwort); } sub check_captcha { my ($id,$answer) = @_; # Leerzeichen entfernen $answer =~ s/^\s//g; $answer =~ s/\s$//g; return 0 if not length($answer); # ungültige leere Antwort return 0 if not ($id =~ /^\d+$/); # ungültiger ID, keine Ziffern my $found = grep /^${id}#.+#\Q${answer}\E$/,@captchas; return $found; } my $captcha_antwort = CGI::param('capans'); my $captcha_id = CGI::param('capid'); my $captcha_geloest = 0; if (!length($captcha_antwort) and !length($captcha_id)) { ($captcha_id, $captcha_frage, undef) = generate_captcha(); } else { $captcha_geloest = check_captcha($captcha_id,$captcha_antwort); }