Session funktioniert nicht

EGJSoldier

Erfahrenes Mitglied
Hallo zusammen, ich habe ein Prolem mit einem Script von mir. Und zwar soll hier ein wert in einer Session gespeichert werden. Wenn ich jedoch versuche, den Wert wieder auszulesen, dann ist die Session leer. Weiß jemand, woran das leigt Hier der Code:
PHP:
<?php
  session_start();
  
  define('CAPTCHA_ANZZEICHEN', 6);
  define('CAPTCHA_BREITE', 150);
  define('CAPTCHA_HOEHE', 50);
  
  $passphrase = "";
  for($i=0;$i<CAPTCHA_ANZZEICHEN;$i++){
	  $passphrase .= chr(rand(97,122));
  }
  
  $_SESSION['pass_phrase'] = sha1($passphrase);
  $img = imagecreatetruecolor(CAPTCHA_BREITE, CAPTCHA_HOEHE);
  $hg_farbe=imagecolorallocate($img,255,255,255);
  $textfarbe=imagecolorallocate($img,0,0,0);
  $malfarbe=imagecolorallocate($img,64,64,64);
  imagefilledrectangle($img,0,0,CAPTCHA_BREITE,CAPTCHA_HOEHE,$hg_farbe);
  
  for($i=0;$i<5;$i++){
	imageline($img,0,rand()%CAPTCHA_HOEHE,CAPTCHA_BREITE,rand()%CAPTCHA_HOEHE,$malfarbe);  
  }
  for($i=0;$i<50;$i++){
	imagesetpixel($img,rand()%CAPTCHA_BREITE,rand()%CAPTCHA_HOEHE,$malfarbe);  
  }
  imagettftext($img,18,0,5,CAPTCHA_HOEHE-5,$textfarbe,"./arial.ttf",$passphrase);
  header("Content-type:image/png");
  imagepng($img);
  imagedestroy($img);
  
?>
Danke schon mal im vorraus
Scantraxx
 
Ok sorry, hier das script, wo ich die Session auslesen möchte:
PHP:
<?php
session_start();
if(isset($_POST['submit'])){
 // $mail = $_POST['mail'];
  //$message = $_POST['message'];

  //echo $mail.'<br />'.$message;
  $passphrase = sha1($_POST['captcha']);
  $session = $_SESSION['pass_phrase'];
  echo $passphrase.'<br /><br />';
  echo $session.'<br />';
  if($session == $passphrase){
    echo 'Klappt';	
  }
  else{
    echo 'Klappt nicht';
  }
}
/*session_unset();
session_destroy();*/
?>
<form enctype="multipart/form-data" method="post" action="index.php?site=mail">
  <img src="captcha.php" alt="captcha" />
  <input type="text" name="captcha" id="captcha" />
  <input type="submit" value="Bestätigen" name="submit" />
</form>
 
$passphrase = "";
for($i=0;$i<CAPTCHA_ANZZEICHEN;$i++){
$passphrase .= chr(rand(97,122));
}

$_SESSION['pass_phrase'] = sha1($passphrase);

Moin,

gib mal nach der for schleife bitte kurz ein echo $passphrase aus und auch gleich noch hinter session und schau mal was drin steht.
PHP:
$passphrase = "";
for($i=0;$i<CAPTCHA_ANZZEICHEN;$i++){
	  $passphrase .= chr(rand(97,122));
echo "<br />".$passphrase."<br />";
$_SESSION['pass_phrase'] = sha1($passphrase);
echo $_SESSION['pass_phrase'];
}

Gruß Zonk
 
Scheint zu funktionieren. Ich bekomme folgende ausgabe:
Code:
a
86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
ax
2a2e1206b4222b0d7cc8c8a1d8b302ee70cfe817
axi
fae537aee8fa9ea93674ea36483f6bfc0954ad06
axii
1dd6fe7f89cd618f6d3f0a09f673b6ab8d7612ea
axiiy
799c6b050368cd8d11d522620f961ddeb82f5249
axiiyk
67bede7a49671e5997483dfb2c8eb208a50f18fc

Wenn ich mein Session jedoch in dem anderen Script ausgeben will, dann zeigt er mir gar nichts an.
 
Zuletzt bearbeitet:
Du hast immer noch nicht erzählt, wie du die Session-ID übermittelst.
Sessions fliegen nicht planlos im Raum ummher....du musst die Session-ID an alle beteiligten Seiten(Formularziel beim Senden, Captcha-Skript) übermitteln, ansonsten wird jedes mal eine neue Session gestartet, sofern keine Cookies verwendet werden(können).

Wenn du dir also etwas ausgeben lässt zur Überprüfung, dann erstmal die Session-ID, um zu sehen, ob dies überall die selbe ist.
 
Zurück