captcha einbinden

  • hallo,


    ich habe ein problem und weiß leider nicht, wie ich es lösen kann bzw woran es liegt.


    ich möchte für eine kommentarfunktion ein captcha einbauen und habe dafür von php-kurs.com das beispiel genommen. eine captcha.php erstellt mit folgendem inhalt:



    das ganze wir dann beim kommentar eintragen aufgerufen:


    Code
    //formular für kommentar
    <img src=\"captcha.php\" border=\"0\" alt=\"captcha\"><br>


    und das ganze wir dann gesendet und mit der eingabe überprüft:



    leider funktioniert das nicht.


    wenn ich mir $_POST['captcha'] ausgeben lasse, seh ich die eingegebenen zeichen. die ausgabe von $_SESSION['captcha-wert'] gab erst nichts aus und nachdem ich noch ein bisschen rumprobiert habe und den text nochmal von der seite kopiert habe gibt es nun "Array" aus.


    woran kann das liegen? sieht wer einen fehler in dem code?

  • Du vergleichst den String aus der Eingabe mit dem Array vom Captcha-Script (jeder Buchstabe ist in einem Paar des Arrays gespeichert), das geht aber nicht.
    Genau das Selbe Problem hatte ich auch, als ich das Captcha nachbauen wollte. ;)


    Du bräuchtest jetzt eine Funktion, die aus dem Array einen String macht oder aus dem String einen Array. Wobei ersteres beim Vergleichen weniger Code wäre. Wenn du, so wie ich damals, keine Funktion dafür findest, musst du das manuell machen, was bei 4 Zeichen durchaus geht, indem du alle Werte des Array hintereinander einem String zuweist:

    PHP
    <span class="syntaxdefault">$captcha </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $text</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">$text</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">$text</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">$text</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">$text</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">4</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> </span>


    Diesen Wert musst du dann in die Session-Variable packen und du kannst es mit der Eingabe vergleichen.


    Ich habe das Problem damals übrigens gelöst, indem ich mir den Teil mit der Zufallsgenerieung des Captcha-Wertes vom Icybook abgeguckt habe. :wink:



    Edit: Mir fällt gerade ein, das geht einfacher mit einer foreach-Schleife:

    PHP
    <span class="syntaxdefault"><br />foreach </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$text as $value</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    $captcha </span><span class="syntaxkeyword">.=</span><span class="syntaxdefault"> $value</span><span class="syntaxkeyword">;<br />}</span><span class="syntaxdefault"> </span>

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!