Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
768
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Nepheus Nepheus ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    103
    Hey,
    habe ein Script von der Page Stoppt-den-Spam.info in meine Homepage eingebaut, klappt leider noch nicht ganz so wie es soll. Es handelt sich um ein CAPTCHA Code. Die Anzeige des Codes funktioniert einwandfrei, das Problem stellt sich bei dem Sichern der Daten. Das Formular prüft ob der eingegebene CAPTCHA Code mit dem vorgegebenen übereinstimmt und 'sollte' den Eintrag speichern. Obwohl ich den richtigen Code eintrage sichert er nichts.

    Der Code:

    captcha.php
    PHP-Code:
    <?php
       
    //ERSTELLEN EINES SICHERHEITSCODES
       
    session_start();
       unset(
    $_SESSION['captcha_spam']);
       
    $text rand(1000,10000); //Zufallszahl

       
    function encrypt($string$key) {
       
    $result '';
       for(
    $i=0$i<strlen($string); $i++) {
          
    $char substr($string$i1);
          
    $keychar substr($key, ($i strlen($key))-11);
          
    $char chr(ord($char)+ord($keychar));
          
    $result.=$char;
       }
       return 
    base64_encode($result);
       }

       
    $_SESSION['captcha_spam'] = encrypt($text"8h384ls94"); //Key
       
    $_SESSION['captcha_spam'] = str_replace("="""$_SESSION['captcha_spam']);

            
       
    header('Content-type: image/png');
       
    $img ImageCreateFromPNG('captcha.PNG'); //Backgroundimage
       
    $color ImageColorAllocate($img000); //Farbe
       
    $ttf "fontf"//Schriftart
       
    $ttfsize 25//Schriftgrösse
       
    $angle rand(0,5);
       
    $t_x rand(5,50);
       
    $t_y 35;
       
    imagettftext($img$ttfsize$angle$t_x$t_y$color$ttf$text);
       
    imagepng($img);
       
    imagedestroy($img);
    ?>
    Im Formular
    1. Eingabefeld
    2. Abfrage ob falsche Eingabe
    3. Ausgabe des Codes
    PHP-Code:
    //1.
    <input type="text" name="captcha" maxlength="4">

    //2.
    if(session_is_registered("captcha")){
     echo 
    "<br><font color='#9B3C3C'><b>Sicherheitscode inkorrekt eingegeben!</b></font>";
     
    session_unregister("captcha");
    }

    //3.
    <img src="captcha.php" border="0" title="sicherheitscode"
    Überprüfung ob der vorgegebene mit dem eingetragenen Code übereinstimmt
    PHP-Code:
    //if($_GET['action']=="save")
    // {
      
    function encrypt($string$key) {
       
    $result '';
       for(
    $i=0$i<strlen($string); $i++) {
          
    $char substr($string$i1);
          
    $keychar substr($key, ($i strlen($key))-11);
          
    $char chr(ord($char)+ord($keychar));
          
    $result.=$char;
       }
       return 
    base64_encode($result);
      }
      
    $sicherheits_eingabe encrypt($_POST['captcha'], "8h384ls94");
      
    $sicherheits_eingabe str_replace("="""$sicherheits_eingabe);
      if(
    $sicherheits_eingabe == $_SESSION['captcha_spam']){
        
        unset(
    $_SESSION['captcha_spam']); 
        
        
    //speichern der daten
        
      
    }else{
       
    session_register("captcha");
      }
    //  } 
    Es geht nur um die markierten Zeilen die ersten und letzten sind teil des Gästebuchscripts. Wie gesagt trotz korrekter Eingabe wird der Eintrag nicht gespeichert. Kann mir da evtl. jemand weiterhelfen? =/

    Link: www.fahrrad-warscheid.de/html/gb.php


    Greetz

    Zusatzinfo:

    Ich nehme an es liegt an der Session. Eigentlich müsste ja die session captcha registiert werden falls kein Eintrag vorgenommen wird, anders gesagt im Falle einer inkorrekten Eingabe des Codes. Sie wird aber nicht registiert...
     

  2. #2
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Da du mit $_GET arbeitest nehme ich an, dass register_globals deaktiviert ist (was auch richtig ist), daher funktioniert session_register() nicht.
    Stattdessen solltest du mit $_SESSION arbeiten.

    PHP-Code:
    $_SESSION['captcha'] = true
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  3. #3
    Nepheus Nepheus ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    103
    Problem leider nicht behoben =/

    gleiche Fehler wie bisher...

    habe else schleife erweitert:
    PHP-Code:
    }else{
     
    $_SESSION['captcha'] = true;
     echo 
    "<meta http-equiv='refresh' content='0; URL=?action=neu'>";

    ohne Erfolg er leitet nicht weiter, das heißt er geht nicht in die else schleife. Müsste er aber oder nicht?!
    Geändert von Nepheus (25.03.07 um 14:50 Uhr)
     

  4. #4
    Avatar von tobee
    tobee tobee ist offline Grolba.com media
    Registriert seit
    Jul 2005
    Ort
    Karlsruhe
    Beiträge
    1.700
    Blog-Einträge
    131
    Hast du den error_reporting mal auf E_ALL gesetzt?
    PHP-Code:
    error_reporting E_ALL ); 
     

  5. #5
    Nepheus Nepheus ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    103
    Wo muss ich das denn reinschreiben und was macht das? Bin nicht so der Profi in PHP sorry =/
     

  6. #6
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    error_reporting()

    Ein Blick in die Funktionsreferenz bringt immer etwas
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  7. #7
    Avatar von Billie
    Billie Billie ist offline Mitglied Platin
    Registriert seit
    Jan 2003
    Ort
    Arzl im Pitztal (Tirol)
    Beiträge
    507
    Hm, du könntest dir natürlich auch mein Tutorial mal ansehen

    http://www.tutorials.de/forum/php-tu...-freetype.html
     

  8. #8
    Nepheus Nepheus ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    103
    Problem gelöst.

    Habe die "Save" Funktion in eine neue Datei gepackt. Der Fehler war wohl was mit session. Da in der neuen Datei die session nochmal gestartet wurde wurde das problem wohl von selbst behoben, naja weiß auch nich genau trotzdem thx an euch =)
     

Ähnliche Themen

  1. CAPTCHA Problem
    Von walle_89 im Forum PHP
    Antworten: 10
    Letzter Beitrag: 08.03.09, 21:07
  2. Captcha-Problem
    Von Headymaster im Forum PHP
    Antworten: 9
    Letzter Beitrag: 18.06.08, 17:47
  3. Captcha Problem
    Von Geordi im Forum PHP
    Antworten: 1
    Letzter Beitrag: 27.12.07, 21:42
  4. Captcha Problem
    Von d2mike im Forum PHP
    Antworten: 2
    Letzter Beitrag: 09.01.07, 12:12
  5. captcha problem
    Von croqued-monsieur im Forum PHP
    Antworten: 4
    Letzter Beitrag: 14.06.06, 10:30