Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Captcha für Formular

Einklappen

Neue Werbung 2019

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

  • PHP Captcha für Formular

    Hi all,

    ich habe hier ein Kontaktformular mir erstellt und möchte nun ein Captcha gegen Spam integrieren.
    Die HTML-Datei ist fertig nur in der PHP hab ich kein Plan wo der Code rein muss.

    PHP-Code:
    <?php    

            
    if ($_POST['von'] != '' && 
        
    $_POST['email'] != ''  &&
        
    $_POST['betreff'] != '' &&
        
    $_POST['nachricht'] != '') {
            
        
    $empf "me@meineseite.de";
        
    $betreff $_POST['betreff'];
        
    $from "From: ";
        
    $from .= $_POST['von'];
        
    $from .= " <";    
        
    $from .= $_POST['email'];
        
    $from .= ">\n";
        
    $from .= "Reply-To: ";
        
    $from .= $_POST['email'];
        
    $from .= "\n";
        
    $from .= "Content-Type: text/html\n";
        
    $text nl2br($_POST['nachricht']);

        if (
    filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
           
    mail($empf$betreff$text$from);
           echo 
    'Vielen Dank. Ihre E-Mail wurde versandt.';
        } else {
            echo 
    nl2br("\n\nBitte geben Sie eine g&uuml;ltige E-Mail-Adresse an!");
        }
    } else {
       echo 
    'Bitte f&uuml;llen Sie alle Felder aus.';    

            
            
        
    ?>
    Der Captcha-code sieht so aus:
    Teil 1
    PHP-Code:
    include_once $_SERVER['DOCUMENT_ROOT'] . '/securimage/securimage.php';

    $securimage = new Securimage(); 
    Teil 2
    PHP-Code:
    if ($securimage->check($_POST['captcha_code']) == false) {
      
    // the code was incorrect
      // you should handle the error so that the form processor doesn't continue

      // or you can use the following code if there is no validation or you do not know how
      
    echo "The security code entered was incorrect.<br /><br />";
      echo 
    "Please go <a href='javascript:history.go(-1)'>back</a> and try again.";
      exit;

    Wäre super, wenn mir jemand helfen könnte.

    LG maxxi

  • #2
    Bevor du ein Captcha einbaust musst du dringend dein Formular absichern!
    Momentan eignet sich dieses zum Versenden von Spam an beliebige Adressen. Zum Absichern empfehle ich die Verwendung einer Mailer-Klasse. (siehe Signatur)

    Außerdem solltest du deine Plausibilitätsprüfung verbessern, irgendwas, was nicht leer ist ist eine der denkbar schlechtesten Methoden.
    [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
    [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

    Kommentar


    • #3
      Nein, was du unter Hilfe verstehst ist "Hier ist Code, macht mal für mich heile". Tut mir leid, aber vorerst gibts nicht mehr als das

      http://www.php.de/php-einsteiger/announcements.html

      http://www.php.de/php-einsteiger/489...rundlagen.html
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        Schon kappiert.
        Hilfe zur Selbsthilfe.

        Danke trotzdem

        Kommentar


        • #5
          Soweit ich dein Vorhaben nachvollziehen konnte wäre der erste Schritte, das Captcha in das zugrundeliegende Formular einzubauen - oder? Die Captcha-Klasse wird wohl eine Methode besitzen, um einen neuen Code für die aktuelle Session zu generieren. Diese musst du vor Aufbau des Formulars aufrufen. Ins Formular baust du dann ein weiteres Feld ein, in das der User den Captcha-Code eingibt. Der muss dazu natürlich irgendwie angezeigt werden - aber wie, hängt auch wieder vom Captcha ab.

          Kommentar


          • #6
            Ich werfe wieder einmal das hier als Input mit rein - zum Thema Captchas sind blödsinn.

            ergänzend:

            Zitat von jspit Beitrag anzeigen
            Einige Hintergrundinformationen werden noch hier und hier ( Konzept zum Formular-Spamschutz) geliefert.
            Die Antispamklasse ist auch nicht mehr so ganz frisch, der Nachfolger nennt sich AntiBot.

            LG jspit
            The string "()()" is not palindrom but the String "())(" is.

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar

            Lädt...
            X