Captcha Problem

Tuts4you

Erfahrenes Mitglied
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:
<?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:
<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:
<?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
 
Hallo.

  • Mach mal aus $_SERVER["Document_Root"] folgendes:
PHP:
$_SERVER["DOCUMENT_ROOT"]
  • Mach mal aus $eingabe folgendes:
PHP:
$_POST["eingabe"]
  • Übergib der image.php die Variable PHPSESSID mit der aktuellen Session-ID:
HTML:
<img src="image.php?PHPSESSID=<?php echo session_id(); ?>" alt="" title="" />
 
DANKE :) funktioniert - lag an der session_id() :)
lg Michael

Hallo.
  • Mach mal aus $_SERVER["Document_Root"] folgendes:
PHP:
$_SERVER["DOCUMENT_ROOT"]
  • Mach mal aus $eingabe folgendes:
PHP:
$_POST["eingabe"]
  • Übergib der image.php die Variable PHPSESSID mit der aktuellen Session-ID:
HTML:
<img src="image.php?PHPSESSID=<?php echo session_id(); ?>" alt="" title="" />
 
Zurück