Ich habe mit PHP ein kleines Script für ein Captcha gebastelt, welches mit Sessions arbeitet. Nun will das Script aber nichts in die Session reinschreiben. Was mache ich falsch?
Mein Code:
<?php
session_start();
function buchstabe($key) {
$key[] = 'A';
$key[] = 'B';
$key[] = 'C';
$key[] = 'D';
$key[] = 'E';
$key[] = 'F';
$key[] = 'G';
$key[] = 'H';
$key[] = 'I';
$key[] = 'J';
$key[] = 'K';
$key[] = 'L';
$key[] = 'M';
$key[] = 'N';
$key[] = 'O';
$key[] = 'P';
$key[] = 'Q';
$key[] = 'R';
$key[] = 'S';
$key[] = 'T';
$key[] = 'U';
$key[] = 'V';
$key[] = 'W';
$key[] = 'X';
$key[] = 'Y';
$key[] = 'Z';
$key[] = '1';
$key[] = '2';
$key[] = '3';
$key[] = '4';
$key[] = '5';
$key[] = '6';
$key[] = '7';
$key[] = '8';
$key[] = '9';
$key[] = '0';
$anzahl = count ( $key );
$anzahl--;
srand(microtime()*1000000);
$zufall = rand(0,$anzahl);
return $key[$zufall];
}
function zahl($deg) {
$deg[] = 1;
$deg[] = 2;
$deg[] = 3;
$deg[] = 4;
$deg[] = 5;
$deg[] = 6;
$deg[] = 7;
$deg[] = 8;
$deg[] = 9;
$deg[] = 10;
$anzahl = count ( $deg );
$anzahl--;
srand(microtime()*1000000);
$zufall = rand(0,$anzahl);
return $deg[$zufall];
}
$grafik = "bg.png";
$font_g = 14; //Schriftgröse
$font = "../Buttons/arial.ttf"; //Schrift (ttf)
$img = imageCreateFromPNG($grafik);
$schwarz = imageColorAllocate($img, 0, 0, 0);
$a = buchstabe($key);
$b = buchstabe($key);
$c = buchstabe($key);
$d = buchstabe($key);
$e = buchstabe($key);
ImageTTFText($img, $font_g, zahl($deg)*36, 20, 20, $schwarz, $font, buchstabe($key));
ImageTTFText($img, $font_g, zahl($deg)*36, 50, 20, $schwarz, $font, buchstabe($key));
ImageTTFText($img, $font_g, zahl($deg)*36, 80, 20, $schwarz, $font, buchstabe($key));
ImageTTFText($img, $font_g, zahl($deg)*36, 110, 20, $schwarz, $font, buchstabe($key));
ImageTTFText($img, $font_g, zahl($deg)*36, 140, 20, $schwarz, $font, buchstabe($key));
$_SESSION['captcha'] = $a.$b.$c.$d.$e;
//Header
header("Content-type: image/PNG");
//Ausgeben
imagePNG($img);
//Speicher freigeben
imageDestroy($img);
?>
Die Variable $_SESSION['captcha'] bleibt aber leer.