tutorials.de-Buchverschenkaktion 08/2010
+ Auf Thema antworten
  1. #1
    Benutzerbild von Microhome
    Microhome Microhome ist offline Mitglied Brokat Microhome ist ein sehr geschätzer Mensch
    Registriert seit
    Jul 2003
    Ort
    Berlin
    Beiträge
    311
    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. PHP 5 / MySQL 5 Seminar (22 Stunden Video-Training)

    Preis: früher: 39,95€ - jetzt nur: 7,99€
    Innerhalb Deutschlands versandkostenfrei!

    PHP 5 / MySQL 5 Lernkurs – 22 Stunden Video-Training auf DVD
    - PHP-, MySQL- und PHPMyAdmin-Grundlagen
    - Datenbankprogrammierung, objektorientierte Programmierung
    - Geeignet für Windows XP und Windows Vista


    Hier geht es zum Angebot

    Über 1.000 weitere IT-Bücher zum Sonderpreis lieferbar!


  3. #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

  4. #3
    Benutzerbild von Microhome
    Microhome Microhome ist offline Mitglied Brokat Microhome ist ein sehr geschätzer Mensch
    Registriert seit
    Jul 2003
    Ort
    Berlin
    Beiträge
    311
    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!

  5. #4
    Benutzerbild von Microhome
    Microhome Microhome ist offline Mitglied Brokat Microhome ist ein sehr geschätzer Mensch
    Registriert seit
    Jul 2003
    Ort
    Berlin
    Beiträge
    311
    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. [PHP] einfacher Captcha mit GD2 und FreeType
    Von Billie im Forum PHP - Tutorials
    Antworten: 1
    Letzter Beitrag: 27.03.08, 11:52
  2. Text Captcha
    Von Felix Jacobi im Forum PHP
    Antworten: 16
    Letzter Beitrag: 18.05.07, 07:04
  3. Captcha sicher?
    Von ThaNewbie im Forum PHP
    Antworten: 4
    Letzter Beitrag: 17.05.07, 11:37
  4. aus Ordner Zufallsbild laden und anzeigen
    Von imini im Forum Flash Plattform
    Antworten: 19
    Letzter Beitrag: 04.04.05, 08:49
  5. Bildordner checken und Zufallsbild
    Von borish im Forum PHP
    Antworten: 1
    Letzter Beitrag: 29.03.05, 11:49

Lesezeichen

Lesezeichen