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:
En php, pour extraire aléatoirement deux nombres, je l'écris de cette façon:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part $rand_keys = array_rand($table, 2);
Qu'en pensez-vous ?
Merci![]()
Partager