tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von SCIPIO-AEMILIANUS
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
987
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    flogy92 flogy92 ist offline Mitglied Silber
    Registriert seit
    Sep 2007
    Ort
    Schweiz
    Beiträge
    92
    Hallo Leute!

    Ich habe schon mehrmals Captchas verwendet (erfolgreich). In diesem Falle will diese aber einfach nicht funktionieren. Ich habe drei Dateien, die dabei eine Rolle spielen:
    - index.php
    - registrieren.php
    - captcha.php

    In der index.php wird die session gestartet und alle anderen Seiten werden per include geladen, also auch die registrieren.php in der das Captcha angezeigt wird. In der registrieren und captcha Datei wird keine neue Session mehr gestartet. Das Problem ist nun aber, dass der Captchacode, den ich in die Session speichere irgendwie in der registrieren.php nicht ankommt. Das Captcha-Bild wird jedoch angezeigt.
    Wenn ich also den Code ausgeben möchte und echo $_SESSION['captcha'] schreibe, wird einfach ein leerer String zurückgegeben :s

    Hier noch der Code der Captcha-Datei:
    PHP-Code:
    <?php

    $CAPTCHA_LENGTH 
    5;    // Länge der Captcha-Zeichenfolge, hier fünf Zeichen
    $FONT_SIZE      16;   // Schriftgröße der Zeichen in Punkt
    $IMG_WIDTH      144;  // Breite des Bild-Captchas in Pixel
    $IMG_HEIGHT     35;   // Höhe des Bild-Captchas in Pixel

    // Unser Zeichenalphabet
    $ALPHABET = array('A''B''C''D''E''F''G',
                      
    'H''Q''J''K''L''M''N',
                      
    'P''R''S''T''U''V''Y',
                      
    'W''2''3''4''5''6''7');

    // Wir erzeugen ein leeres JPEG-Bild von der Breite IMG_WIDTH und Höhe IMG_HEIGHT
    $img imagecreatetruecolor($IMG_WIDTH$IMG_HEIGHT);

    // Wir definieren eine Farbe mit Zufallszahlen
    // Die Farbwerte sind durchgehend und absichtlich hoch (200 - 256) gewählt,
    // um eine "leichte" Farbe zu erhalten
    $col imagecolorallocate($imgrand(150180), rand(190220), 255);

    // Wir füllen das komplette Bild mit der zuvor definierten Farbe
    imagefill($img00$col);

    $captcha ''// Enthält später den Captcha-Code als String
    $x 10// x-Koordinate des ersten Zeichens, 10 px vom linken Rand


    for($i 0$i $CAPTCHA_LENGTH$i++) {
      
    $chr $ALPHABET[rand(0count($ALPHABET) - 1)]; // ein zufälliges Zeichen aus dem definierten Alphabet ermitteln
      
    $captcha .= $chr// Der Zeichenfolge $captcha das ermittelte Zeichen anfügen

      
    $col imagecolorallocate($imgrand(0199), rand(0199), 2); // einen zufälligen Farbwert definieren
      
    $font './waverf';

      
    $y 20 rand(010); // die y-Koordinate mit einem Mindestabstand plus einem zufälligen Wert festlegen
      
    $angle rand(030); // ein zufälliger Winkel zwischen 0 und 30 Grad

      /*
       * Diese Funktion zeichnet die Zeichenkette mit den
       * gegeben Parametern (Schriftgröße, Winkel, Farbe, TTF-Font, usw.)
       * in das Bild.
       */
      
    imagettftext($img$FONT_SIZE$angle$x$y$col$font$chr);

      
    $dim imagettfbbox($FONT_SIZE$angle$font$chr); // ermittelt den Platzverbrauch des Zeichens
      
    $x += $dim[4] + abs($dim[6]) + 11// Versucht aus den zuvor ermittelten Werten einen geeigneten Zeichenabstand zu ermitteln
    }

    $_SESSION['captcha'] = $captcha;

    // Wir teilen dem Browser mit, dass er es hier mit einem JPEG-Bild zu tun hat.
    header('Content-Type: image/jpeg'true);

    imagejpeg($img); // Ausgabe des Bildes an den Browser
    imagedestroy($img); // Freigeben von Speicher
      
    ?>

    Kann mir jemand helfen?
    Vielen Dank im Voraus!


    MfG flogy92
     

  2. #2
    Avatar von SCIPIO-AEMILIANUS
    SCIPIO-AEMILIANUS SCIPIO-AEMILIANUS ist offline aka DonMahallem
    Registriert seit
    Mar 2007
    Ort
    Saxonburg(Pa)
    Beiträge
    375
    Also wenn ich das richtig verstehe sieht jetzt dein Code ungefähr so aus:
    Index.php:
    PHP-Code:
    <?php
    start_session
    ();
    include 
    "registrieren.php";
    ?>
    registrieren.php:
    PHP-Code:
    <img src="captcha.php"/>
    <?php
    echo $_SESSION['captcha'];
    ?>
    und halt die Captcha wie gezeigt.
    Dein Fehler liegt glaube daran, dass erstmal die captcha.php erst nach den beiden anderen Dateien geparst wird und somit die variabel Session["captcha"] gar nicht existiert. Dü müsstest wenn dann die Seite neu laden. Und fehlt in der Captcha PHP noch session_start(); . Setzt das mal am Anfang der Datei ein.
     
    MFG Scipio
    Ein Danke für hilfreiche Antworten ist gern gesehen.

  3. #3
    flogy92 flogy92 ist offline Mitglied Silber
    Registriert seit
    Sep 2007
    Ort
    Schweiz
    Beiträge
    92
    Genau so sah mein Code aus!

    Habe nun, wie du geschrieben hast, das session_start(); auch in der Captcha-Datei hinzugefügt. Damit es die Seite neu laden kann habe ich einfach einen form Button gemacht und diesen auf dieselbe Seite gelinkt. Aber auch nachdem ich den anklicke wird kein Captcha-Code erkannt...


    MfG flogy
     

  4. #4
    Avatar von SCIPIO-AEMILIANUS
    SCIPIO-AEMILIANUS SCIPIO-AEMILIANUS ist offline aka DonMahallem
    Registriert seit
    Mar 2007
    Ort
    Saxonburg(Pa)
    Beiträge
    375
    Also dann muss es an deinem Server liegen, nur da kann ich nicht weiterhelfen.
    Ich hab im Anhang mal die drei Dateien, so wie ich es getestet hab.
    Und bei mir hats geklappt.
    ttt.zip

    Mist, hab Fehler gemacht so hier nochmal:
    ttt.zip
     
    MFG Scipio
    Ein Danke für hilfreiche Antworten ist gern gesehen.

  5. #5
    flogy92 flogy92 ist offline Mitglied Silber
    Registriert seit
    Sep 2007
    Ort
    Schweiz
    Beiträge
    92
    Scheint nun irgendwie zu gehen (auch bei mir) - jedoch aber nur, wenn ich an die URL ein "www." davorschreibe! Wenn ich das nicht tue, geht es nicht! Es gibt deshalb auch zwei Session-ID's (für http://www.meinepage und für http://meinepage)!

    Kann ich das irgendwie so machen, dass es immer automatisch auf www. ... weiterleitet oder einfach dass es nur noch eine Session-ID gibt?

    Danke schonmal, dass du mich weitergebracht hast


    MfG flogy92
     

  6. #6
    Avatar von SCIPIO-AEMILIANUS
    SCIPIO-AEMILIANUS SCIPIO-AEMILIANUS ist offline aka DonMahallem
    Registriert seit
    Mar 2007
    Ort
    Saxonburg(Pa)
    Beiträge
    375
    Ja das geht ungefähr wie folgt:
    Nach Session Start:
    PHP-Code:
    setcookie     (session_name(),session_id(),time()*2,"","http://www.deinepage"); 
     
    MFG Scipio
    Ein Danke für hilfreiche Antworten ist gern gesehen.

  7. #7
    flogy92 flogy92 ist offline Mitglied Silber
    Registriert seit
    Sep 2007
    Ort
    Schweiz
    Beiträge
    92
    Das funktioniert irgendwie nicht. Es erstellt zwar ein Cookie aber da steht dann statt www.meinepage.com einfach Domain: .www.meinedomain.com

    :s
     

  8. #8
    Avatar von SCIPIO-AEMILIANUS
    SCIPIO-AEMILIANUS SCIPIO-AEMILIANUS ist offline aka DonMahallem
    Registriert seit
    Mar 2007
    Ort
    Saxonburg(Pa)
    Beiträge
    375
    So, ich glaub hab die Lösung(hab noch mal bei php.net nachgelesen)
    PHP-Code:
    setcookie(session_name(),session_id(),time()*2,"/",".deinepage.de"); 
    So dürfte es für alle subdomains verfügbar sein, und somit auch für www.
    flogy92 bedankt sich. 
    MFG Scipio
    Ein Danke für hilfreiche Antworten ist gern gesehen.

  9. #9
    flogy92 flogy92 ist offline Mitglied Silber
    Registriert seit
    Sep 2007
    Ort
    Schweiz
    Beiträge
    92
    Wow! Super, jetzt klappt alles
    Vielen Dank!

    MfG flogy92
     

Ähnliche Themen

  1. Captcha, wird nicht angenommen
    Von Loddar1 im Forum PHP
    Antworten: 5
    Letzter Beitrag: 22.02.10, 16:40
  2. Captcha wird nicht dargestellt
    Von starfoxfs im Forum PHP
    Antworten: 2
    Letzter Beitrag: 11.02.10, 12:36
  3. Session wird nicht übertragen
    Von karl123 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 16.05.09, 10:28
  4. Captcha wird nicht angezeigt
    Von Alexander1307 im Forum PHP
    Antworten: 5
    Letzter Beitrag: 17.04.07, 20:32
  5. Array wird nicht übertragen
    Von Thomas D im Forum PHP
    Antworten: 6
    Letzter Beitrag: 17.04.07, 14:05

Stichworte