<?php
// SESSION-ERSATZ:
// IP-Adresse und Temp-Datei ermitteln.
$ip = strtr(getenv("REMOTE_ADDR"),":","_"); // Ersetzt : durch _
$filename="tmp/".$ip.".inc";
// Zeichen ohne Verwechselungsgefahr.
$zeichen = "A B C D E F G H J K L M N Q R T U V W X Y 2 3 4 5 8";
// erstellen eines Arrays
$arrzeichen = explode(" ", $zeichen);
// mischen des Arrays
shuffle ( $arrzeichen );
// die ersten 6 Zeichen
$text = array_slice($arrzeichen, 0, 5);
// ZufallsCoce in einer Datei speichern. (SESSION-ERSATZ)
$tmp = "<?php
\$text=\"$text[0]$text[1]$text[2]$text[3]$text[4]\";
?> "; // Leerzeichen ist wichtig!
$datei=fopen("$filename","w-");
fwrite($datei,$tmp);
fclose($datei);
// Header: Mitteilen, dass es sich um ein Bild handelt und
// dass dieses nicht im Cache gespeichert werden soll.
header('Expires: Mon, 26 Jul 1990 05:00:00 GMT');
header("Last-Modified: ".date("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');
header('Content-type: image/png');
putenv('GDFONTPATH=' . realpath('.'));
$bild = ImageCreateFromPNG ("captcha.png");
// Farben definieren
$farbe_w = ImageColorAllocate ($bild, 255, 255, 255);
$farbe_b = ImageColorAllocate ($bild, 0, 0, 0);
// die verwendete Schrift-Datei arial.ttf muss auf dem Server
// Schriftgröße, Winkel, X-Pos, Y-Pos, Farbe, Schrift, Inhalt
ImageTTFText ($bild, 13, 20, 8, 18, $farbe_b, "arial.ttf", $text[0]);
ImageTTFText ($bild, 14, 0, 23, 22, $farbe_b, "arial.ttf", $text[1]);
ImageTTFText ($bild, 12, -10, 39, 15, $farbe_b, "arial.ttf", $text[2]);
ImageTTFText ($bild, 13, 10, 57, 17, $farbe_b, "arial.ttf", $text[3]);
ImageTTFText ($bild, 11, -20, 69, 20, $farbe_b, "arial.ttf", $text[4]);
// Ausgabe im Format PNG
ImagePng ($bild);
// Speicher wieder freigeben
ImageDestroy ($bild);
?>
|