Guten Morgen,
ich habe vor einiger Zeit ein Templatesystem auf der Basis des Tutorials von php-quake.net geschrieben. Nun wollte ich gerne einen Bereich durch ein Captcha schützen. Jedoch kommt es da zu einigen für mich komplett unverständlichen Problemen.
Ich habe mal testweise einfach irgend einen Tutorial Test-Code genommen, der normalerweise ganz normal funktioniert.
captcha.php
Eingebunden wird die captcha.php in eine .tpl Datei.
test.tpl
So nun zu den Ereignissen, die ich nicht verstehe ...
1. Seitenaufruf
Grafik Captcha-Code: 111111
Session Captcha-Code: Session ist nicht vorhanden
2. Seitenaufruf
Grafik Captcha-Code: 222222
Session Captcha-Code: 111111
3. Seitenaufruf
Grafik Captcha-Code: 333333
Session Captcha-Code: 222222
Irgendwie fehlt mir an der Stelle ein bisschen logisches denken glaube ich. Woran kann das liegen?
Mit freundlichen Grüßen:
Micha
ich habe vor einiger Zeit ein Templatesystem auf der Basis des Tutorials von php-quake.net geschrieben. Nun wollte ich gerne einen Bereich durch ein Captcha schützen. Jedoch kommt es da zu einigen für mich komplett unverständlichen Problemen.
Ich habe mal testweise einfach irgend einen Tutorial Test-Code genommen, der normalerweise ganz normal funktioniert.
captcha.php
PHP-Code:
<?php
// Session starten
session_start();
// Alten CAPTCHA-Code aus der Session loeschen
unset( $_SESSION['captcha_code'] );
// Das Cachen der Grafik verhindern
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" );
// Dem Browser mitteilen das es sich hierbei um ein JPG handelt.
header( 'Content-type: image/jpeg' );
// Sicherheitscode generieren
$AlphaNumerischerString = "ABCDEFGH2345689";
$_SESSION['captcha1'] = substr( str_shuffle( $AlphaNumerischerString ), 0, 2 );
$_SESSION['captcha2'] = substr( str_shuffle( $AlphaNumerischerString ), 0, 2 );
$_SESSION['captcha3'] = substr( str_shuffle( $AlphaNumerischerString ), 0, 2 );
// Grafik erzeugen und an den Browser senden
$Schriftarten = array( "zachary.ttf", "mtcorsva.ttf", "gilligan.ttf");
$Bilddatei = imagecreatefrompng( "hintergrund.png" );
$TextFarbe1 = imagecolorallocate( $Bilddatei, 0, 125, 0 );
$TextFarbe2 = imagecolorallocate( $Bilddatei, 130, 70, 90 );
$TextFarbe3 = imagecolorallocate( $Bilddatei, 180, 90, 190 );
imagettftext( $Bilddatei, 12, 15, 3, 24, $TextFarbe1, $Schriftarten[0], $_SESSION['captcha1'] );
imagettftext( $Bilddatei, 16, 0, 26, 15, $TextFarbe2, $Schriftarten[1], $_SESSION['captcha2'] );
imagettftext( $Bilddatei, 14, -20, 53, 18, $TextFarbe3, $Schriftarten[2], $_SESSION['captcha3'] );
imagejpeg( $Bilddatei );
// Grafik zerstören und Speicher freigeben
imagedestroy( $Bilddatei );
?>
test.tpl
HTML-Code:
<img src="captcha.php" />
1. Seitenaufruf
Grafik Captcha-Code: 111111
Session Captcha-Code: Session ist nicht vorhanden
2. Seitenaufruf
Grafik Captcha-Code: 222222
Session Captcha-Code: 111111
3. Seitenaufruf
Grafik Captcha-Code: 333333
Session Captcha-Code: 222222
Irgendwie fehlt mir an der Stelle ein bisschen logisches denken glaube ich. Woran kann das liegen?
Mit freundlichen Grüßen:
Micha
Kommentar