Hey i got some crazy problem by making a captcha.
I creating a shuffle variable and give it to the session, then i opening the image.php
captcha.php
<?php
error_reporting(-1);
ini_set('display_errors', 1);
// Session start
SESSION_START();
// delet old CAPTCHA-Code from Session
unset( $_SESSION["captcha"] );
// the Array
$text[] = "2";
$text[] = "4";
$text[] = "5";
$text[] = "7";
$text[] = "8";
$text[] = "A";
$text[] = "B";
$text[] = "C";
$text[] = "D";
$text[] = "E";
$text[] = "F";
$text[] = "G";
$text[] = "H";
$text[] = "J";
$text[] = "K";
$text[] = "M";
$text[] = "N";
$text[] = "P";
$text[] = "Q";
$text[] = "R";
$text[] = "S";
$text[] = "T";
$text[] = "U";
$text[] = "V";
$text[] = "W";
$text[] = "X";
$text[] = "Y";
$text[] = "Z";
//mixup array
shuffle ( $text );
//getting the first 5 Charakters
$outputtext = array_slice ($text, 0, 5);
//give it to the session
$_SESSION["captcha"] = implode($outputtext);
session_write_close();
echo "Captcha ist: ".$_SESSION["captcha"];
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<img src="captchaimage.php" alt="" style="vertical-align: middle;">
</html>
captchaimage.php
<?php
error_reporting(-1);
ini_set('display_errors', 1);
SESSION_START();
Header ("Content-type: image/png");
$str = $_SESSION["captcha"];
$bild = ImageCreateFromPNG ("http://www.php.de/images/captcha.logo1.png");
$farbe_w = ImageColorAllocate ($bild, 255, 255, 255);
$farbe_b = ImageColorAllocate ($bild, 0, 0, 0);
ImageTTFText ($bild, 32, -30, 224, 112, $farbe_w, "arial.ttf",
$str[0]);
ImageTTFText ($bild, 32, -90, 288, 208, $farbe_w, "arial.ttf",
$str[1]);
ImageTTFText ($bild, 32, 0, 208, 336, $farbe_w, "arial.ttf",
$str[2]);
ImageTTFText ($bild, 32, 45, 128, 304, $farbe_w, "arial.ttf",
$str[3]);
ImageTTFText ($bild, 32, 99, 128, 192, $farbe_w, "arial.ttf",
$str[4]);
header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
header( "Cache-Control: no-store, no-cache, must-revalidate" );
header( "Cache-Control: post-check=0, pre-check=0", false );
header( "Pragma: no-cache" );
ImagePng ($bild);
ImageDestroy ($bild);
?>
this works fine, but if i delete the echo from captcha.php
this Line: echo "Captcha ist: ".$_SESSION["captcha"];
i get an image without characters, like the session is empty, but if the session is realy empty the image wount be createt.
Why dose the captchaimage.php only getting the correct session, if i wrote the echo line in the captcha.php?