captcha.php gaat fout
hoe kan ik het zo aan passen of 1 maken dat het werkt voor alle browser?
sorry voor het hele sript maar ik denk dat er daar ergen wat fout in gaat.
Code (php)
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
############################################
# Filename : captcha.php #
#------------------------------------------#
# Written By : Thijs Ferket #
# Website : www.ferket.net #
#------------------------------------------#
############################################
session_start();
// Captcha keygenerator
function keygen($aantal)
{
$tekens = array_merge(range('A', 'F'), array('H', 'J', 'K', 'M', 'N'), range('P', 'Z'));
$randomstring = "";
for($i=1; $i <= $aantal; $i++)
{
shuffle($tekens);
$randomstring .= $tekens[0];
}
return $randomstring;
}
$random_code = keygen(4);
$_SESSION['captcha_code'] = $random_code;
$breedte = 90;
$hoogte = 30;
header("content-type: image/png");
$afbeelding = imagecreate($breedte, $hoogte);
$achtergrond = imagecolorallocate($afbeelding, 255, 255, 255);
$font = "fonts/arial.ttf";
$kleur = imagecolorallocate($afbeelding, 186, 197, 214);
imagerectangle($afbeelding, 0, 0, $breedte-1, $hoogte-1, $kleur);
$aantal_punten = rand(250, 500);
for ($i = 0; $i < $aantal_punten; $i++)
{
imagesetpixel($afbeelding, rand(1, $breedte-1), rand(1, $hoogte-1), $kleur);
}
$aantal_lijnen = rand(5, 8);
$aantal_cirkels = rand(5, 8);
$aantal_lijnen2 = rand(2, 6);
$spread = 100;
for($i = 0; $i < $aantal_lijnen; $i++)
{
$y_begin = rand(-$spread, $hoogte + $spread);
$y_eind = rand(-$spread, $hoogte + $spread);
$kleur = imagecolorallocate($afbeelding, rand(170, 255), rand(170, 255), rand(170, 255));
imageline($afbeelding, 0, $y_begin, $breedte, $y_eind, $kleur);
}
for($i = 0; $i < $aantal_cirkels; $i++)
{
$y_center = rand(1, $breedte-1);
$x_center = rand(1, $hoogte-1);
$kleur = imagecolorallocate($afbeelding, rand(170, 255), rand(170, 255), rand(170, 255));
imageellipse($afbeelding, $y_center, $y_center, rand(50, 100), rand(50, 100), $kleur);
}
$tekst = str_split($random_code);
for ($i = 0; $i < count($tekst); $i++)
{
$xas = rand(5, 15);
$yas = rand(18, 25);
$graden = rand(-25, 25);
$grootte = rand(12,14);
$kleur = imagecolorallocate($afbeelding, rand(0, 100), rand(0, 100), rand(0, 100));
imagettftext($afbeelding, $grootte, $graden, $i * 20 + $xas, $yas, $kleur, $font, $tekst[$i]);
}
for($i = 0; $i < $aantal_lijnen2; $i++)
{
$y_begin = rand(-$spread, $hoogte + $spread);
$y_eind = rand(-$spread, $hoogte + $spread);
$kleur = imagecolorallocate($afbeelding, rand(170, 255), rand(170, 255), rand(170, 255));
imageline($afbeelding, 0, $y_begin, $breedte, $y_eind, $kleur);
}
imagepng($afbeelding);
imagedestroy($afbeelding);
?>
############################################
# Filename : captcha.php #
#------------------------------------------#
# Written By : Thijs Ferket #
# Website : www.ferket.net #
#------------------------------------------#
############################################
session_start();
// Captcha keygenerator
function keygen($aantal)
{
$tekens = array_merge(range('A', 'F'), array('H', 'J', 'K', 'M', 'N'), range('P', 'Z'));
$randomstring = "";
for($i=1; $i <= $aantal; $i++)
{
shuffle($tekens);
$randomstring .= $tekens[0];
}
return $randomstring;
}
$random_code = keygen(4);
$_SESSION['captcha_code'] = $random_code;
$breedte = 90;
$hoogte = 30;
header("content-type: image/png");
$afbeelding = imagecreate($breedte, $hoogte);
$achtergrond = imagecolorallocate($afbeelding, 255, 255, 255);
$font = "fonts/arial.ttf";
$kleur = imagecolorallocate($afbeelding, 186, 197, 214);
imagerectangle($afbeelding, 0, 0, $breedte-1, $hoogte-1, $kleur);
$aantal_punten = rand(250, 500);
for ($i = 0; $i < $aantal_punten; $i++)
{
imagesetpixel($afbeelding, rand(1, $breedte-1), rand(1, $hoogte-1), $kleur);
}
$aantal_lijnen = rand(5, 8);
$aantal_cirkels = rand(5, 8);
$aantal_lijnen2 = rand(2, 6);
$spread = 100;
for($i = 0; $i < $aantal_lijnen; $i++)
{
$y_begin = rand(-$spread, $hoogte + $spread);
$y_eind = rand(-$spread, $hoogte + $spread);
$kleur = imagecolorallocate($afbeelding, rand(170, 255), rand(170, 255), rand(170, 255));
imageline($afbeelding, 0, $y_begin, $breedte, $y_eind, $kleur);
}
for($i = 0; $i < $aantal_cirkels; $i++)
{
$y_center = rand(1, $breedte-1);
$x_center = rand(1, $hoogte-1);
$kleur = imagecolorallocate($afbeelding, rand(170, 255), rand(170, 255), rand(170, 255));
imageellipse($afbeelding, $y_center, $y_center, rand(50, 100), rand(50, 100), $kleur);
}
$tekst = str_split($random_code);
for ($i = 0; $i < count($tekst); $i++)
{
$xas = rand(5, 15);
$yas = rand(18, 25);
$graden = rand(-25, 25);
$grootte = rand(12,14);
$kleur = imagecolorallocate($afbeelding, rand(0, 100), rand(0, 100), rand(0, 100));
imagettftext($afbeelding, $grootte, $graden, $i * 20 + $xas, $yas, $kleur, $font, $tekst[$i]);
}
for($i = 0; $i < $aantal_lijnen2; $i++)
{
$y_begin = rand(-$spread, $hoogte + $spread);
$y_eind = rand(-$spread, $hoogte + $spread);
$kleur = imagecolorallocate($afbeelding, rand(170, 255), rand(170, 255), rand(170, 255));
imageline($afbeelding, 0, $y_begin, $breedte, $y_eind, $kleur);
}
imagepng($afbeelding);
imagedestroy($afbeelding);
?>
Gewijzigd op 22/06/2012 14:37:34 door Ronald E
En wat heb je geprobeerd, wat gaat er mis/goed? Het is browser trouwens.
Geef eens een link naar de pagina dan kunnen wij gaan spitten.
Toon eens hoe je captcha.php gebruikt in je formulier
omdat er in het script veel php aan uit codes staan
Gewijzigd op 22/06/2012 16:02:46 door Ronald E
Alles tussen vierkante code tags zetten.
[code][/code]
Zeg, ik heb hier geen IE9 in de buurt, maar probeer dit eens:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] === "POST" && isset($_POST['captcha_code'], $_SESSION['captcha_code'])) {
if (strtolower($_POST['captcha_code']) == strtolower($_SESSION['captcha_code'])) {
echo 'yippie!';
}
else {
echo 'not yippie!';
}
echo '<br><a href="index.php">Terug naar formulier</a>';
exit();
}
?>
<form action="" method="post">
<input name="captcha_code"/>
<img src="captcha.php"/>
<input value="GO" type="submit"/>
</form>
session_start();
if ($_SERVER['REQUEST_METHOD'] === "POST" && isset($_POST['captcha_code'], $_SESSION['captcha_code'])) {
if (strtolower($_POST['captcha_code']) == strtolower($_SESSION['captcha_code'])) {
echo 'yippie!';
}
else {
echo 'not yippie!';
}
echo '<br><a href="index.php">Terug naar formulier</a>';
exit();
}
?>
<form action="" method="post">
<input name="captcha_code"/>
<img src="captcha.php"/>
<input value="GO" type="submit"/>
</form>
Werkt dit?
Trouwens ... je weet dat je 'arial.ttf' moet downloaden en in map "fonts" steken?
Gewijzigd op 22/06/2012 16:18:38 door Kris Peeters
ik heb het aangepast en het werkt nu