Captcha ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Captcha ?

    Hi@all

    Habe folgende Captcha.php
    PHP-Code:
    <?php
    session_name
    ('CAP');
    session_start();
    error_reporting(E_ALL);
    # Benötigte Files laden! Hier kann editiert werden!
    $CAPTCHA_TempString "";
    # Zufallsfunktion für Zahlen und Buchstaben
    function GetRandomChar()
    {
     
    # Zufallszahl generieren
     
    mt_srand((double)microtime()*1000000);
     
    $CAPTCHA_RandVal mt_rand(1,2);
     
    # Buchstabensalat generieren jeh nachdem ob Randval 1 oder 2 ist
     
    switch ($CAPTCHA_RandVal)
     {
      case 
    1:
      
    # Zahlen 0-9
      
    $CAPTCHA_RandVal mt_rand(4857);
      break;
      case 
    2:
      
    # Grosse Buchstaben
      
    $CAPTCHA_RandVal mt_rand(6590);
      break;
     }
     
    # Zufallscode ausgeben
     
    return chr($CAPTCHA_RandVal);
    }

    # Zufallscode x-stellig ausgeben
    for ($i 1$i <= 6$i++)
    {
     
    $CAPTCHA_TempString .= GetRandomChar();
    }

    # Text in Sessionvariable speichern
    if (isset($CAPTCHA_TempString))
    {
     
    $_SESSION['captcha'] = str_replace('I','E',str_replace('0','3',str_replace('1','S',str_replace('O','P',str_replace('4','A',str_replace('D','K',$CAPTCHA_TempString))))));
    }
    else
    {
     die(
    "Zufallscode konnte nicht generiert werden!");
    }

    // Alternative Grafik-Zeichenfunktion nutzen?
    // (bei fehlerhafter Darstellung oder fehlendem Truetype-support) 1=nein, 2=ja
    $imagettftext "1";
    $Welleneffekt "1";
    $Textgroesse  30;
    $Texthoehe    45;
    $Schriftart   "mistral.ttf";
    $bg1 "background1.png";
    $bg2 "background2.png";
    $ov1 "overlay1.png";
    $ov2 "overlay2.png";

    // Benötige Strings überprüfen
    if (isset($_SESSION['captcha']))
    {
     
    $CAPTCHA_RandomText $_SESSION['captcha'];
    }
    else
    {
     
    // Fehlermeldung ausgeben
     
    header ("Content-type: image/png");
     
    $im = @imagecreatetruecolor(25030) or die("Cannot Initialize new GD image stream");
     
    $text_color imagecolorallocate($im2331491);
     
    imagestring($im1057"Kein Zufallscode übergeben!"$text_color);
     
    imagepng($im);
     
    imagedestroy($im);
     exit();
    }

    // Auf Funktion überprüfen
    if ($imagettftext == "1")
    {
     
    // Benötige Files überprüfen
     
    if (!file_exists($Schriftart))
     {
      
    // Fehlermeldung ausgeben
      // header ("Content-type: image/png");
      
    $im = @imagecreatetruecolor(25030) or die("Cannot Initialize new GD image stream");
      
    $text_color imagecolorallocate($im2331491);
      
    imagestring($im1057"Schriftart nicht gefunden!"$text_color);
      
    imagepng($im);
      
    imagedestroy($im);
      exit();
     }
        
     if (!
    file_exists($bg1) OR !file_exists($bg2))
     {
      
    // Fehlermeldung ausgeben
      
    header ("Content-type: image/png");
      
    $im = @imagecreatetruecolor(25030) or die("Cannot Initialize new GD image stream");
      
    $text_color imagecolorallocate($im2331491);
      
    imagestring($im1057"Hintergrundbild nicht gefunden!"$text_color);
      
    imagepng($im);
      
    imagedestroy($im);
      exit();
     }
        
     if (!
    file_exists($ov1) OR !file_exists($ov2))
     {
      
    // Fehlermeldung ausgeben
      
    header ("Content-type: image/png");
      
    $im = @imagecreatetruecolor(25030) or die("Cannot Initialize new GD image stream");
      
    $text_color imagecolorallocate($im2331491);
      
    imagestring($im1057"Overlaybild nicht gefunden!"$text_color);
      
    imagepng($im);
      
    imagedestroy($im);
      exit();
     }
        
     
    // Zufallshintergrund
     
    mt_srand((double)microtime()*1000000);
     
    $Bild1 mt_rand(12);
     switch (
    $Bild1)
     {
      case 
    1:
      
    $Grafik=imagecreatefrompng($bg1);
      
    $Grafikhilf=imagecreatefrompng($bg1);
      break 
    1;
      case 
    2:
      
    $Grafik=imagecreatefrompng($bg2);
      
    $Grafikhilf=imagecreatefrompng($bg2);
      break 
    1;
     }

     
    // Zufallsgrafik2
     
    mt_srand((double)microtime()*1000000);
     
    $Bild2 mt_rand(12);
     switch (
    $Bild2)
     {
      case 
    1:
      
    $Grafik2=imagecreatefrompng($ov1);
      break 
    1;
      case 
    2:
      
    $Grafik2=imagecreatefrompng($ov2);
      break 
    1;
     }

     
    // Textfarben ins Array speichern
     
    $textfarbe = array( imagecolorallocate($Grafik128128128),
                          
    imagecolorallocate($Grafik000),
                         
    imagecolorallocate($Grafik501714),
                         
    imagecolorallocate($Grafik1280128),
                         
    imagecolorallocate($Grafik128128255),
                         
    imagecolorallocate($Grafik255128128),
                         
    imagecolorallocate($Grafik1921220),
                         
    imagecolorallocate($Grafik25094250),
                         
    imagecolorallocate($Grafik122146224),
                         
    imagecolorallocate($Grafik122155180)
                        );

     
    // Text auf das Bild schreiben
     
    imagettftext($Grafik$Textgroessemt_rand(-1313), 10$Texthoehe+mt_rand(-7,8), $Textfarbe1 $textfarbe[array_rand($textfarbe)] , $Schriftart$CAPTCHA_RandomText[0]);
     
    imagettftext($Grafik$Textgroessemt_rand(-1313), 45$Texthoehe+mt_rand(-7,8), $Textfarbe2 $textfarbe[array_rand($textfarbe)] , $Schriftart$CAPTCHA_RandomText[1]);
     
    imagettftext($Grafik$Textgroessemt_rand(-1313), 80$Texthoehe+mt_rand(-7,8), $Textfarbe3 $textfarbe[array_rand($textfarbe)] , $Schriftart$CAPTCHA_RandomText[2]);
     
    imagettftext($Grafik$Textgroessemt_rand(-1313), 113$Texthoehe+mt_rand(-7,8), $Textfarbe4 $textfarbe[array_rand($textfarbe)] , $Schriftart$CAPTCHA_RandomText[3]);
     
    imagettftext($Grafik$Textgroessemt_rand(-1313), 150$Texthoehe+mt_rand(-7,8), $Textfarbe5 $textfarbe[array_rand($textfarbe)] , $Schriftart$CAPTCHA_RandomText[4]);
     
    imagettftext($Grafik$Textgroessemt_rand(-1313), 191$Texthoehe+mt_rand(-7,8), $Textfarbe6 $textfarbe[array_rand($textfarbe)] , $Schriftart$CAPTCHA_RandomText[5]);

     
    // Welleneffekt
     
    if ($Welleneffekt == "2")
     {
      
    $stauchung mt_rand(0,100)/400+0.10;
      
    $Grafikalt $Grafik;
      
    $Grafik $Grafikhilf;
      for (
    $i=1;$i<=65;$i++)
      {
       
    imagecopy($Grafik$Grafikaltround((sin($i*$stauchung)*2))+3$i1$i230,1);
      }
     }
     
     
    // Transparente Grafik drüberlegen
     
    imagecopy($Grafik$Grafik2000023065);

     
    // Bild ausgeben
     
    header("Content-type: image/png");
     
    imagepng($Grafik);
     
    imagedestroy($Grafik);
    }
    else if (
    $imagettftext == "2")
    {
     
    // Alternativbild ausgeben
     
    header ("Content-type: image/png");
     
    $im = @imagecreatetruecolor(7030) or die("Cannot Initialize new GD image stream");
     
    $text_color imagecolorallocate($im255255255);
     
    imagestring($im1057$CAPTCHA_RandomText$text_color);
     
    imagepng($im);
     
    imagedestroy($im);
    }
    else
    {
     
    // Fehlermeldung ausgeben
     
    header ("Content-type: image/png");
     
    $im = @imagecreatetruecolor(43030) or die("Cannot Initialize new GD image stream");
     
    $text_color imagecolorallocate($im2331491);
     
    imagestring($im1057"Fehlerhafte Auswahl($imagettftext)der Funktion! (1 od. 2)"$text_color);
     
    imagepng($im);
     
    imagedestroy($im);
     exit();
    }
    ?>
    Auf meinem Localhost (HomeRechner) funktioniert alles, doch online leider nicht.
    Kann mir jemand bitte helfen.

    Thx@all

  • #2
    Hallo,

    soll ich das Thema gleich trashen oder willst du vielleicht doch noch dazuschreiben
    • was du damit meinst, dass es nicht funktioniert
    • welches Verhalten du erwartest
    • welches Verhalten tatsächlich auftritt
    • welche Debuggingmaßnahmen du durchgeführt hast
    • welche Ergebnisse und Vermutungen daraus resultieren
    • was du selbst versucht hast, um es zu beheben
    • warum du den Code nicht auf den wirklich relevanten Teil beschränkt hast

    ?

    Wir sind keine kostenlose Reparaturanstalt für geklauten und kaputteditierten PHP-Code.

    Gruß,

    Amica
    Zuletzt geändert von AmicaNoctis; 04.04.2011, 12:10.
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      @AmicaNoctis

      Upps, nicht gleich so heftig.

      Also auf meinem localen rechner wird nach ausführen dieses Codes ein Bild mit aufgeschriebenen Buchstaben ausgegeben.
      Nachdem ich die Datei auf meinen Server geladne habe wird nur noch das Bild ausgegeben, ohne Buchstaben.

      Ich bekomme keine Fehlermeldung.

      Leider weiß ich nicht wo ich den Fehleransatz machen soll, deshalb der komplette Code der Datei und meine Bitte ob mir jemand einen Tipp geben kann woran das liegen könnte, das es local funktioniert und online eben nicht.

      Thx@all

      Kommentar


      • #4
        OK, danke, hat sich erledigt.

        Die Pfadangabe zur Schriftart muss:
        PHP-Code:
        $Schriftart   $_SERVER['DOCUMENT_ROOT']."/pfad/schriftart.ttf"
        lauten.

        Thx@all

        Kann geschlossen werden.

        Kommentar


        • #5
          Zitat von Prominenter Beitrag anzeigen
          Upps, nicht gleich so heftig.
          Du bist halt nicht der erste, der meint, Forenregeln seien nur zum Spaß da und nach dem 1000sten Mal fängt es leicht an, zu nerven.

          Zitat von Prominenter Beitrag anzeigen
          Also auf meinem localen rechner wird nach ausführen dieses Codes ein Bild mit aufgeschriebenen Buchstaben ausgegeben.
          Nachdem ich die Datei auf meinen Server geladne habe wird nur noch das Bild ausgegeben, ohne Buchstaben.

          Ich bekomme keine Fehlermeldung.
          Das ist ja schonmal eine Fehlerbeschreibung.

          Ist auf dem Server TrueType-Support verfügbar? Hast du die zu benutzende TTF-Datei auch mit hochgeladen?

          [Edit] Alles klar.
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar


          • #6
            wie schon gesagt, vermutlich fehlen nötige bibliotheken
            zum finden des fehlers sollten du neben
            error_reporting(E_ALL);
            auch
            ini_set('display_errors',true); setzen
            und weiter unten das Senden der Header ausschalten.
            Dann siehst du die Fehler normalerweise sofort, hat mir bei der captcha Programmierung sehr geholfen
            verantwortlich für Elygor - Das kostenlose Browserspiel

            Kommentar


            • #7
              Zitat von sEeb Beitrag anzeigen
              wie schon gesagt, vermutlich fehlen nötige bibliotheken
              Wie ebenfalls schon gesagt:
              Zitat von Prominenter Beitrag anzeigen
              OK, danke, hat sich erledigt.
              - und das schon einen halben Tag vor deinem Beitrag ...
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar

              Lädt...
              X