Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
1343
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Microhome
    Microhome Microhome ist offline Mitglied Brokat
    Registriert seit
    Jul 2003
    Ort
    Berlin
    Beiträge
    345
    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!cro
     
    Lösungsvorschlag:
    Wenn es mit dem mysql_query(...); Probleme gibt, pack ein die(mysql_error()); dahinter und guck dir den MySQL-Fehler an!

  2. #2
    Registriert seit
    Feb 2005
    Ort
    NRW
    Beiträge
    460
    Hallo,

    dann ändere das so ab:
    PHP-Code:
    <?php
        session_start
    ();
        require 
    "class_captcha.php";    
        
    $pc = new pCaptcha();
        
    $pc->showCaptcha();
    ?>
    Session sollte vor Bekanntmachung von $_SESSION['pcaptchacode'] gestartet werden.


    Gruß

    RS9999
     

  3. #3
    Avatar von Microhome
    Microhome Microhome ist offline Mitglied Brokat
    Registriert seit
    Jul 2003
    Ort
    Berlin
    Beiträge
    345
    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!

  4. #4
    Avatar von Microhome
    Microhome Microhome ist offline Mitglied Brokat
    Registriert seit
    Jul 2003
    Ort
    Berlin
    Beiträge
    345
    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!

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 27.08.09, 22:34
  2. Captcha Session Problem
    Von Lenox im Forum PHP
    Antworten: 8
    Letzter Beitrag: 18.06.09, 21:04
  3. Zufallsbild?
    Von snoopy1972fc im Forum PHP
    Antworten: 4
    Letzter Beitrag: 05.11.06, 01:48
  4. Zufallsbild
    Von MJAInc im Forum Flash Plattform
    Antworten: 9
    Letzter Beitrag: 28.12.05, 10:40
  5. Zufallsbild
    Von Slater im Forum PHP
    Antworten: 1
    Letzter Beitrag: 28.12.03, 15:43