Einfaches Captcha

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Einfaches Captcha

    Hallo,

    wie im andere Threat schon beschrieben, suche ich ein relativ simples Captcha Script oder ein Tutorial dazu. Es genügen mir 3 Zeichen. Wenn man das ganze auch noch skalieren könnte, wäre dies super. Bei Google gibt es zwar viele Seiten, doch die Captchas sind immer wahre Monster :roll:

    Meine 2. Frage dazu:

    Ist es möglich, ein Captcha auch auf der selben Seite auswerten zu lassen? Die Tutorials und Scripte die ich bisher gefunden habe, benötigen immer 2 Seiten (die 2. für die Auswertung). Mein Problem: Ich habe auf meiner Download-Seite ja die Daten bekommen für den Download und diese gehen mir ja bei der Auswertung verloren und man kann die Datei nicht mehr downloaden. Da nützt eine erfolgreiche Captcha-Eingabe auch nichts mehr :? Dass es geht, beweist Rapidshare. Die haben das auch irgendwie integriert, nur wie haben die das gemacht?

    Gruß Inekai
  • So macht das Rapidshare:

    Quellcode

    1. <form name="dl" action="http://dl10.rapidshare.de/files/30026126/170799368/DieDatei" method="post">Download <font color="red">DieDatei</font>: dl10.rapidshare.de (7953 von 10000 MBit/s in Gebrauch)<br><h3>Kein Premium-User. Bitte <img src="https://ssl.rapidshare.de/cpt170799368.png"> hier eingeben: <input name="captcha" size="4" maxlength="3" type="text"> <input name="actionstring" value="Download" type="submit"></h3></form>


    Hallo,
    was willst du denn genau ?
    Möchtest du dein Skript nicht noch einmal nachladen lassen ? Dann wäre AJAX eine Lösung.
    Oder willst du das Formular einfach von der momentanen Seite verarbeiten lassen ?
    Dann hilft:

    Quellcode

    1. <?
    2. echo '<form action="';
    3. echo $_SERVER['PHP_SELF'];
    4. echo '"...';


    Habe deine Frage leider nicht richtig verstanden. :oops:
    Kannst es ja vielleicht nochmal ein bisschen genauer darstellen oder ich bin einfach nur doof :cry: , und jemand anderes kann dir weiterhelfen.
    1+1 = 10
  • Ich verwende immer ein recht einfaches Capcha Script das ich mir irgendwann mal zusammen gebastelt hab.

    Quellcode

    1. <?PHP
    2. session_start();
    3. $alphanum = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    4. $code = substr( str_shuffle( $alphanum ), 0, 5 );
    5. $_SESSION['captcha'] = md5( $code );
    6. $image = imagecreatefromjpeg( '../images/captcha' .rand( 1, 4 ). '.jpg');
    7. $bgCol = imagecolorallocate ( $image, 255, 255, 255 );
    8. $txtCol = imagecolorallocate ( $image, 0, 0, 0 );
    9. imagestring ( $image, 5, 5, 8, $code, $txtCol );
    10. header( 'Expires: Mon, 12 Jul 1999 01:01:00 GMT' );
    11. header( 'Last-Modified: ' . gmdate( "D, d M Y H:i:s" ) . ' GMT' );
    12. header( 'Cache-Control: no-store, no-cache, must-revalidate' );
    13. header( 'Cache-Control: post-check=0, pre-check=0', false );
    14. header( 'Pragma: no-cache' );
    15. header( 'Content-type: image/jpeg' );
    16. imagejpeg( $image );
    17. imagedestroy( $image );
    18. ?>
    Alles anzeigen

    Das einfach als capcha.php speichern und dann mit

    Quellcode

    1. <img src="include/captcha.php" border="0" alt="captcha"><br>
    2. Visuelle Bestätigung: <input name="captcha" size="5" type="text">
    in die Seite einbinden.
    Püfen kannst du das dann mit

    Quellcode

    1. if ( md5($income['captcha']) == $_SESSION['captcha'] )
    2. {
    3. CAPCHA OK
    4. }
  • "TDege" schrieb:



    Habe deine Frage leider nicht richtig verstanden. :oops:
    Kannst es ja vielleicht nochmal ein bisschen genauer darstellen oder ich bin einfach nur doof :cry: , und jemand anderes kann dir weiterhelfen.


    Hi TDege,

    es geht um folgendes:

    Leute kommen auf eine dynamisch generierte Downloadseite mit dem Downloadcode, der zur Datei führt. Die Captchas, die ich gesehen habe, brauchen aber eine 2. Seite zur überprüfung, ob der eingegebene Captchacode richtig ist und verarbeiten dann die Anfrage. Nur auf der 2. Seite würde mir ja der generierte Downloadcode verloren gehen, außer ich könnte den irgendwie mitnehmen auf die 2. Seite wo der Captchacode überprüft wird und der Download würde dann bei richtigem Captchacode starten und bei falschem Code ein neues Captcha generieren. Da ich eben noch PHP-Anfänger bin, muss ich mir noch vieles erfragen und anlesen und schauen, wie andere das gelöst haben, wie z. B. Rapidshare - "Learning by doing" eben :?

    Gruß inekai
  • Hallo Tobi,

    könntest du dich bitte nocheinmal bei mir melden, denn ich habe dein Captcha genutzt aber leider geht es nicht richtig.

    Schau da bitte
    http://spinning-minds.com/gb/test.php



    MfG

    Quellcode

    1. <img src="captcha.php" border="0" alt="captcha"><br>
    2. Visuelle Bestätigung: <input name="captcha" size="5" type="text">
    3. <input type='submit' value='Eintragen'>
    4. <?php
    5. if ( md5($income['captcha']) == $_SESSION['captcha'] )
    6. {
    7. echo 'Captcha ok';
    8. }
    9. else 'Captcha Error';
    10. ?>


    Ehm es ist nicht korrekt es geht mir lediglich um das Bild was angezeigt werden sollte.
    --Kommt noch--
  • Hast du die Hintergrundbilder hochgelaen?

    Quellcode

    1. $image = imagecreatefromjpeg( '../images/captcha' .rand( 1, 4 ). '.jpg');

    Also 1.jpg, 2.jpg, 3.jpg, 4.jpg und dann den Pfad natürlich anpassen.

    Wenn nur ein Bild verwendet werden soll, kann man aus der Zeile auch einfach

    Quellcode

    1. $image = imagecreatefromjpeg( './pfad/bild.jpg');
    machen.

    Hab ich vergessen oben dazu zu schreiben, sorry. Aber steht ja im Code und sollte deshalb auch so klar sein.
  • wasfalsch:

    ich hab´versucht, das hier als captcha zu verwenden. tut nicht, weil selbst richtige eingaben im code als "falsch" interpretiert werden- soll heissen, sie werden an die adresse im "else"-teil geschickt.

    abhilfe?

    if ( md5($income['captcha']) == $_SESSION['captcha'] )
    {
    $emailadresse = "adresserichtig";
    }
    ELSE
    {
    $emailadresse = "adressefalsch";
    }
  • Die Definition von $income wird nicht erläutert. Vermutlich musst du $income schlicht durch $_POST ersetzen.

    Wenn man nicht genau versteht wie es funktioniert, sollte man sich keine Codeausschnitte aus Foren kopieren.
    Ich würde dir daher zu "professionelleren" Ansätzen wie phpcaptcha.org/ raten.

    UPDATE: Mehr Captcha Code auch in unserem Wiki: [wiki]Captcha Tutorial[/wiki]