-
Hallo liebe Community,
ich verwende die Captcha Klasse von http://www.powie.de/cms/forum/showthread.php?id=21009. Jedoch kann ich die Session nicht ausgeben. Ist da möglicherweise eine Einstellung in der php.ini falsch?
show.php
Code :1 2 3 4 5 6
<?php require "class_captcha.php"; session_start(); $pc = new pCaptcha(); $pc->showCaptcha(); ?>
pass.php
Code :1 2 3 4 5
<? echo "<img src=\"show.php\"><br><br>"; $pwd = $_SESSION['pcaptchacode']; echo "Passwort: $pwd"; ?>
Das Captcha-Bild wird auch korrekt angezeigt und irgendwie scheinen Sessions ja zu funktionieren, denn es wird solange das selbe Passwort im Captcha angezeigt, wie ich den Browser nicht schließe.
Hier die Klasse:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
<?php putenv('GDFONTPATH=/var/fonts'); class pCaptcha { var $pcap_fontsize; //Schriftgrösse var $pcap_font; //Schriftart (ttf) var $pcap_code; //Der CODE var $pcap_len; //Codelänge var $pcap_bg; //Hintergrund // PHP 5 Constructor function __construct( $pcap_code = "" ) { $this->pcap_code = ""; $this->pcap_font = "ltromatic"; $this->pcap_bg = "back.png"; $this->pcap_fontsize = 24; $this->pcap_len = 6; if ($this->pcap_code == "" ) { $this->newCode(); } else { $_SESSION['pcaptchacode'] = $this->pcap_code; } } // PHP 4 Contructor function pCaptcha( $pcap_code = "" ) { $this->__construct( $pcap_code ) ; } function showCaptcha () { $img_format = 'png'; //Daten des BG $imgsize = GetImageSize($this->pcap_bg); switch($imgsize[2]): case 1 : $bg = ImageCreateFromGIF($this->pcap_bg); break; case 2 : $bg = ImageCreateFromJPEG($this->pcap_bg); break; case 3 : $bg = ImageCreateFromPNG($this->pcap_bg); break; endswitch; //Textgrösse $pos = imagettfbbox($this->pcap_fontsize,0,$this->pcap_font,$this->pcap_code); //var_dump($pos); $width = intval(abs($pos[0])+abs($pos[2])+6); $height = intval(abs($pos[1]+$pos[7])+6); $posx = 3; $posy = $height - 3; $pcap_im = imagecreatetruecolor($width,$height); imagecopyresampled($pcap_im,$bg,0,0,0,0,$width,$height,ImageSX($bg),ImageSY($bg)); //Text einfügen // colors $color_white = imagecolorallocate($pcap_im, 0xFF, 0xFF, 0xFF); $color_black = imagecolorallocate($pcap_im, 0x00, 0x00, 0x00); imagettftext($pcap_im,$this->pcap_fontsize,0,$posx,$posy,$color_black,$this->pcap_font,$this->pcap_code); imageinterlace($pcap_im,false); $pcap_image = 'image'.$img_format; // sending image header('Content-type: image/'.$img_format); $pcap_image($pcap_im); } function newCode() { if ( !isset($_SESSION['pcaptchacode']) ) { $iid= md5(uniqid(rand())); $iid= substr($iid,0,$this->pcap_len); $_SESSION['pcaptchacode'] = $iid; $this->pcap_code = $iid; } else { $this->pcap_code = $_SESSION['pcaptchacode']; } } function delCode() { if ( isset($_SESSION['pcaptchacode']) ) { unset ( $_SESSION['pcaptchacode'] ); } } } ?>
Als Ausgabe bekomme ich eben das Bild angezeigt und dadrunter steht dann Passwort: aber dann wird der Inhalt der Session halt nicht ausgegeben. Was mache ich falsch?
Liebe Grüße
m!croLösungsvorschlag:
Wenn es mit dem mysql_query(...); Probleme gibt, pack ein die(mysql_error()); dahinter und guck dir den MySQL-Fehler an!
-
Hallo,
dann ändere das so ab:
Session sollte vor Bekanntmachung von $_SESSION['pcaptchacode'] gestartet werden.PHP-Code:<?php
session_start();
require "class_captcha.php";
$pc = new pCaptcha();
$pc->showCaptcha();
?>
Gruß
RS9999
-
Hmm, funktioniert aber auch nicht. Hab in der show.php die beiden Zeilen getauscht aber das Ergebnis ist leider das selbe

Hab mal noch was getestet. Also über pass.php scheints ja nicht (warum?) nicht zu funktionieren.
Habe show.php mal ein Bisschen abgewandelt und siehe da, wenn ich show.php öffne dann zeigt
er mir den Session-Array an: Array ( [pcaptchacode] => 0eade9 )
show.php (abgewandelt)
Code :1 2 3 4 5 6 7
<?php session_start(); require "class_captcha.php"; $pc = new pCaptcha(); print_r($_SESSION); //$pc->showCaptcha(); ?>
Woran liegt das denn Nun hat show.php natürlich das Captcha nicht angezeigt aber die Session scheint ja zu laufen. Nur pass.php zeigt sie nicht an, wieso?Geändert von Microhome (22.02.06 um 18:35 Uhr)
Lösungsvorschlag:
Wenn es mit dem mysql_query(...); Probleme gibt, pack ein die(mysql_error()); dahinter und guck dir den MySQL-Fehler an!
-
LOL super.. vor lauter source-lesen die ganze Zeit übersehen gehabt: in pass.php fehlt einfach nur nen session_start().
Hab das ganze jetzt aber in nem eigenen Script gemacht (15 Zeilen). FUnktioniert einwandfrei und ist wesentlich einfacher als die o.g. Klasse.. naja.
Danke trotzdem fürs lesen!Lösungsvorschlag:
Wenn es mit dem mysql_query(...); Probleme gibt, pack ein die(mysql_error()); dahinter und guck dir den MySQL-Fehler an!
![]() |
PHP 5 / MySQL 5 Seminar (22 Stunden Video-Training) Preis: früher: 39,95€ - jetzt nur: 7,99€ PHP 5 / MySQL 5 Lernkurs – 22 Stunden Video-Training auf DVD Hier geht es zum Angebot Über 1.000 weitere IT-Bücher zum Sonderpreis lieferbar! |
Ähnliche Themen
-
[PHP] einfacher Captcha mit GD2 und FreeType
Von Billie im Forum PHP - TutorialsAntworten: 1Letzter Beitrag: 27.03.08, 11:52 -
Text Captcha
Von Felix Jacobi im Forum PHPAntworten: 16Letzter Beitrag: 18.05.07, 07:04 -
Captcha sicher?
Von ThaNewbie im Forum PHPAntworten: 4Letzter Beitrag: 17.05.07, 11:37 -
aus Ordner Zufallsbild laden und anzeigen
Von imini im Forum Flash PlattformAntworten: 19Letzter Beitrag: 04.04.05, 08:49 -
Bildordner checken und Zufallsbild
Von borish im Forum PHPAntworten: 1Letzter Beitrag: 29.03.05, 11:49



Zitieren
Login





Lesezeichen