Hallo Leute!
Ich brauch mal wieder eure Hilfe. Dieses mal geht es um ein Captcha...
image.php --> hier wird das Captcha erzeugt und die Session Variable erzeugt
|
PHP-Code:
|
|
<?php session_start(); unset($_SESSION['captcha']); $text = rand(1000,10000); //Zufallszahl
function encrypt($string, $key) { $result = ''; for($i=0; $i<strlen($string); $i++) { $char = substr($string, $i, 1); $keychar = substr($key, ($i % strlen($key))-1, 1); $char = chr(ord($char)+ord($keychar)); $result.=$char; } return base64_encode($result); }
$_SESSION['captcha'] = encrypt($text, "8h384ls94"); //Key $_SESSION['captcha'] = str_replace("=", "", $_SESSION['captcha']);
header('Content-type: image/png'); $img = ImageCreateFromPNG('image.png'); //Backgroundimage $color = ImageColorAllocate($img, 0, 0, 0); //Farbe $ttf = $_SERVER['Document_Root']."/arialf"; //Schriftart $ttfsize = 25; //Schriftgrösse $angle = rand(0,5); $t_x = rand(5,50); $t_y = 35; imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $text); imagepng($img); imagedestroy($img); ?>
|
Die image.php wird dann in das Formular eingebunden
test.php
|
PHP-Code:
|
|
<form action="check.php" method="GET" enctype="text/plain"> <img src="image.php" /> <input type="text" name="code" /> </form>
|
und via Enter wird man auf die check.php weitergeleitet:
|
PHP-Code:
|
|
<?php session_start(); function encrypt($string, $key) { $result = ''; for($i=0; $i<strlen($string); $i++) { $char = substr($string, $i, 1); $keychar = substr($key, ($i % strlen($key))-1, 1); $char = chr(ord($char)+ord($keychar)); $result.=$char; } return base64_encode($result); } $eingabe = encrypt($_REQUEST["code"], "8h384ls94"); $eingabe = str_replace("=", "", $eingabe);
//nur für mich relevant damit ich sehe ob die Variablen leer sind oder nicht... echo "Eingabe: ".$eingabe."<br>"; echo "Catcha: ".$_SESSION['captcha']."<br>";
if($eingabe == $_SESSION['captcha']){ unset($_SESSION['captcha']); echo "richtig!"; } else { echo "falsch!"; }
?>
|
So, ich hab jetzt das Problem mit der Session!
Wenn die test.php aufgerufen wird (wo eigentlich durch die image.php eine Session Variabel erzeugt werden sollte) passiert das genau NICHT - erst wenn ich die image.php separat aufrufe und dann die Zahlenkombi eingeb funktionierts auch ... WARUM?
Danke ... ihr seid Spitze!
lg Michael