Création d'un captcha en perl
Bonjour :)
J'utilise actuellement sur un de mes sites un captcha en php qui calcule la somme de deux nombres générés aléatoirement.
J'ai décidé de le réécrire en perl.
Voici les trois premières étapes:
- Stocker des nombres dans un tableau
- Extraire deux nombres aléatoire du tableau
- Calcul de la somme des deux nombres
Voici le code en perl:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
#!/usr/bin/perl -w
# Don't forget chmod 755
use strict;
use warnings;
use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser); routine
# Security
$CGI::POST_MAX=1024*100; # Max 100K posts
$CGI::DISABLE_UPLOADS=1; # No upload
# Creating a new CGI object
my $cgi=new CGI;
&show_captcha;
sub show_captcha {
# Table of values
my @table=(2, 35, 15, 6, 40, 4, 8, 22, 11, 5, 32, 10, 1, 12, 26);
# Random extraction of two values of the table
my @rand_keys=rand @table[2];
# Question and sum of the two values
my $question='Please enter the result of the sum '.@table[@rand_keys[0]]. ' + '.@table[@rand_keys[1]].' (to avoid spam) = ';
print $cgi->header,
$question;
$cgi->end_html; |
En php, pour extraire aléatoirement deux nombres, je l'écris de cette façon:
Code:
$rand_keys = array_rand($table, 2);
Mais en perl, c'est un autre problème. En effet, lorsque je rafraîchis la page, uniquement le premier nombre est généré, le second est toujours égal à 2 8O
Qu'en pensez-vous ?
Merci :mrgreen: