tutorials.de-Buchverschenkaktion 08/2010
+ Auf Thema antworten
  1. #1
    Nepheus Nepheus ist offline Mitglied Gold Nepheus hat eine blütenweiße Weste
    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. 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
    Benutzerbild von Felix Jacobi
    Felix Jacobi Felix Jacobi ist offline do ut des Felix Jacobi hat die Renommee-Anzeige deaktiviert
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    4.965
    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

    They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety.
    Benjamin Franklin

  4. #3
    Nepheus Nepheus ist offline Mitglied Gold Nepheus hat eine blütenweiße Weste
    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)

  5. #4
    Benutzerbild von tobee
    tobee tobee ist offline GROLBA DEVELOPMENT tobee ist jedem bekannt tobee ist jedem bekannt tobee ist jedem bekannt tobee ist jedem bekannt
    Registriert seit
    Jul 2005
    Ort
    Karlsruhe
    Beiträge
    1.659
    Blog-Einträge
    131
    Hast du den error_reporting mal auf E_ALL gesetzt?
    PHP-Code:
    error_reporting E_ALL ); 

  6. #5
    Nepheus Nepheus ist offline Mitglied Gold Nepheus hat eine blütenweiße Weste
    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 =/

  7. #6
    Benutzerbild von Felix Jacobi
    Felix Jacobi Felix Jacobi ist offline do ut des Felix Jacobi hat die Renommee-Anzeige deaktiviert
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    4.965
    Blog-Einträge
    65
    error_reporting()

    Ein Blick in die Funktionsreferenz bringt immer etwas
    KIDS Kinderbetreuungsdienst
    Xing

    They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety.
    Benjamin Franklin

  8. #7
    Benutzerbild von Billie
    Billie Billie ist offline Mitglied Brokat Billie befindet sich auf einem aufstrebenden Ast
    Registriert seit
    Jan 2003
    Ort
    Arzl im Pitztal (Tirol)
    Beiträge
    478
    Hm, du könntest dir natürlich auch mein Tutorial mal ansehen

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

  9. #8
    Nepheus Nepheus ist offline Mitglied Gold Nepheus hat eine blütenweiße Weste
    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. Problem mit Captcha-Grafiken erstellen
    Von xtratz im Forum PHP
    Antworten: 0
    Letzter Beitrag: 23.05.07, 13:19
  2. Captcha Problem
    Von d2mike im Forum PHP
    Antworten: 2
    Letzter Beitrag: 09.01.07, 12:12
  3. captcha problem
    Von croqued-monsieur im Forum PHP
    Antworten: 4
    Letzter Beitrag: 14.06.06, 10:30
  4. Captcha Problem (einbinden)
    Von Benard im Forum PHP
    Antworten: 6
    Letzter Beitrag: 22.05.06, 12:41
  5. Captcha: Verschleierung
    Von mistertwisters im Forum PHP
    Antworten: 5
    Letzter Beitrag: 07.05.06, 14:17

Lesezeichen

Lesezeichen