Werke schon seit Stunden an der Lösung für folgendes Problem (html und 1 Skript weiter unten):
"kontakt-test.html" (ist Teil eines künftigen Formulars mit Captcha)
Auf dieser html-Seite soll ein random generiertes Captcha-Bild ausgegeben werden (generiert mit "captcha2.php").
Um den generierten Code im Formular mit js auf Richtigkeit abzuchecken, habe ich zum Test zunächst im html ein js mit einem Alert für den Inhalt des Codes (Zeile 12-14) eingefügt.
Im php in Zeile 17 den Code mit echo übergeben.
Führt man das html aus, gibt es keine Alert-Meldung und auch kein Captcha-Bild (Zeile 16) mit Fehlermeldung '$text' is undefined.
Entfernt man im php in der Zeile 30 den Befehl "imagepng...", funktioniert der Alert (5stelliger Code wird gezeigt), aber kein Captcha-Bild.
Entfernt man stattdessen im php die Zeile 17 (echo....), wird Captcha-Bild richtig angezeigt, aber keine Alert-Meldung und '$text' undefined.
Das "ganze Theater" sollte als Vorbereitung für ein komplettes Formular mit Captcha dienen, bei dem nach Submit alle Felder inkl. dem Captcha-Code mit js abprüft werden sollen.
Bin leider kein PHP-Guru - aber mittlerweile schon ziemlich verzweifelt.
Vielen Dank im voraus für Eure Hilfe.
Georg
Html (kontakt-test.html):
PHP (captcha2.php)
"kontakt-test.html" (ist Teil eines künftigen Formulars mit Captcha)
Auf dieser html-Seite soll ein random generiertes Captcha-Bild ausgegeben werden (generiert mit "captcha2.php").
Um den generierten Code im Formular mit js auf Richtigkeit abzuchecken, habe ich zum Test zunächst im html ein js mit einem Alert für den Inhalt des Codes (Zeile 12-14) eingefügt.
Im php in Zeile 17 den Code mit echo übergeben.
Führt man das html aus, gibt es keine Alert-Meldung und auch kein Captcha-Bild (Zeile 16) mit Fehlermeldung '$text' is undefined.
Entfernt man im php in der Zeile 30 den Befehl "imagepng...", funktioniert der Alert (5stelliger Code wird gezeigt), aber kein Captcha-Bild.
Entfernt man stattdessen im php die Zeile 17 (echo....), wird Captcha-Bild richtig angezeigt, aber keine Alert-Meldung und '$text' undefined.
Das "ganze Theater" sollte als Vorbereitung für ein komplettes Formular mit Captcha dienen, bei dem nach Submit alle Felder inkl. dem Captcha-Code mit js abprüft werden sollen.
Bin leider kein PHP-Guru - aber mittlerweile schon ziemlich verzweifelt.
Vielen Dank im voraus für Eure Hilfe.
Georg
Html (kontakt-test.html):
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Language" content="de" />
<TITLE></title>
</head>
<body>
<script type="text/javascript" src="captcha2.php"></script>
<script type="text/javascript">
alert($text)
</script>
Bild: <img src="captcha2.php" border="0" title="Sicherheitscode" />
</body>
</html>
PHP (captcha2.php)
PHP:
<?php
session_start();
unset($_SESSION['captcha_spam']);
function randomString($len) {
srand(date("s")); //Der String $possible enthält alle Zeichen, die verwendet werden sollen
$possible="ABCDEFGHJKLMNPRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789";
$str="";
while(strlen($str)<$len) {
$str.=substr($possible,(rand()%(strlen($possible))),1);
}
return($str); }
$text = randomString(5); //Die Zahl bestimmt die Anzahl stellen
echo ('var $text ="'.$text.'"');
$_SESSION['captcha_spam'] = $text;
header('Content-type: image/png');
$file = '../captcha/captcha.png';
$img = ImageCreateFromPNG($file); //Backgroundimage
$color = ImageColorAllocate($img, 0, 0, 0); //Farbe
$ttfsize = 22; //Schriftgrösse
$angle = rand(0,3);
$t_x = rand(7,20);
$t_y = 30;
imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, "../captcha/xfiles.ttf", $text);
imagepng($img);
imagedestroy($img);
?>