Hi ,
Ich möchte mein Formular zusätzlich mit Captcha vor Spambots absichern. Das ganze sieht dann in der Formularseite folgendermaßen aus:
Und in der random.php, in der das Bild generiert wird:
Nun treten folgende Probleme auf:
a) Der Buchstabencode, der durch die random.php erstellt wird, bleibt stets der gleiche, wechselt nicht.
b) Trotz vermeindlicher richtiger Eingabe im Formblock komme ich nicht "durch" zum echo '';, dass alles geklappt hat.
Vielleicht springt ja einem sofort was ins Auge
Gruß,
blu
Ich möchte mein Formular zusätzlich mit Captcha vor Spambots absichern. Das ganze sieht dann in der Formularseite folgendermaßen aus:
PHP:
<form action="test.php" method="post">
<input type="text" name="validator" id="validator" size="4" />
<img src="random.php" alt="captcha" width="60" height="20" vspace="1" align="top" />
</form>
<?php
if (!empty($_POST['validator']) && $_POST['validator'] == $_SESSION['rand_code']) {
echo 'klappt :-)';
unset($_SESSION['rand_code']);
}
?>
Und in der random.php, in der das Bild generiert wird:
PHP:
<?php
session_start();
if (empty($_SESSION['rand_code'])) {
$str = "";
$length = 0;
for ($i = 0; $i < 4; $i++) {
$str .= chr(rand(97, 122));
}
$_SESSION['rand_code'] = $str;
}
$imgX = 60;
$imgY = 20;
$image = imagecreatetruecolor(60, 20);
$backgr_col = imagecolorallocate($image, 238,239,239);
$border_col = imagecolorallocate($image, 208,208,208);
$text_col = imagecolorallocate($image, 46,60,31);
imagefilledrectangle($image, 0, 0, 60, 20, $backgr_col);
imagerectangle($image, 0, 0, 59, 19, $border_col);
$font = "captchaschrift.ttf";
$font_size = 10;
$angle = 0;
$box = imagettfbbox($font_size, $angle, $font, $_SESSION['rand_code']);
$x = (int)($imgX - $box[4]) / 2;
$y = (int)($imgY - $box[5]) / 2;
imagettftext($image, $font_size, $angle, $x, $y, $text_col, $font, $_SESSION['rand_code']);
header("Content-type: image/png");
imagepng($image);
imagedestroy ($image);
?>
Nun treten folgende Probleme auf:
a) Der Buchstabencode, der durch die random.php erstellt wird, bleibt stets der gleiche, wechselt nicht.
b) Trotz vermeindlicher richtiger Eingabe im Formblock komme ich nicht "durch" zum echo '';, dass alles geklappt hat.
Vielleicht springt ja einem sofort was ins Auge
Gruß,
blu
Zuletzt bearbeitet: