Core Blacklist für Kontaktformular nutzen

  • Hallo zusammen,

    ich habe längere Zeit Contact Form 7 benutzt und bin dann zu Happyforms gewechselt. Dieses Plugin ist leicht einzurichten und ermöglicht schöne Formulare. In der Free-Version werden die Eingaben aber nicht mit der Core Blacklist abgeglichen und man erhält somit den üblichen Müll.
    Die Entwickler haben für die Free-Version nur einige Hinweise zum Abgeich mit der Core Blacklist gegeben, welche die Funktion "check_comment()" verwendet.
    Diesen Filter habe ich bekommen, kriege es aber nicht hin. Hat jemand dazu eine Idee?

    PHP
    add_filter( 'happyforms_email_alert', function( $email_message ) {
        // $email_message->message['parts'] contains a list of submitted key, values.
        // $email_message->message['parts'];
        // Use core's check_comment() function to check for spam.
        // Set the "to" address to empty in case of spam.
        // $email_message->set_to( '' );
    
    
        return $email_message;
    } );

    Die Core Blacklist ist sehr praktisch und wirkt auch bei den Kommentaren.
    Vielen Dank für einen guten Tipp!

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Beantwortet leider nicht direkt deine Frage (einen passenden Filter zu programmieren dauert mich einfach zu lange :confused:),
    aber hast du mal "Ein-Klick-HoneyPot-Spamschutz" im Plugin aktiviert?! Das sollte ja auch erfolgreich vor Spam schützen? So wie ich die Pluginbeschreibung verstehe ist dieses Feature auch in der Free Version vorhanden

    Digitaler Rucksack Nomade

  • Beantwortet leider nicht direkt deine Frage (einen passenden Filter zu programmieren dauert mich einfach zu lange :confused:),
    aber hast du mal "Ein-Klick-HoneyPot-Spamschutz" im Plugin aktiviert?! Das sollte ja auch erfolgreich vor Spam schützen? So wie ich die Pluginbeschreibung verstehe ist dieses Feature auch in der Free Version vorhanden

    Ich erwarte auch nicht eine fertige Lösung, welche jemand programmieren muss. Einige Hinweise helfen mir aber weiter, da ich Grundkenntnisse in PHP, CSS, HTML usw. habe. Für Happyforms habe ich hier ein umfangreiches Tutorial geschrieben und ein Zusatz-Plugin entwickelt.
    aber hast du mal "Ein-Klick-HoneyPot-Spamschutz" im Plugin aktiviert?! Das sollte ja auch erfolgreich vor Spam schützen? So wie ich die Pluginbeschreibung verstehe ist dieses Feature auch in der Free Version vorhanden[/QUOTE]
    Der HoneyPot hilft dabei nicht, da es sich i. d. R. um per Hand eingetragene Spam-Nachrichten handelt.

    Einmal editiert, zuletzt von m266 (1. Juli 2021 um 10:55)

  • Nachtrag:
    In CF7 werden die Eingaben geben die Blacklist geprüft und somit Spam abgeblockt. Wie das realisiert ist, habe ich nicht herausgefunden. Im Grunde müsste diese Funktion von CF7 in Happyforms eingebaut werden.

  • Der entspr. Code im Plugin Contact Form 7 ist in der Funktion [FONT=Courier New]wpcf7_check_disallowed_list(..)[/FONT] zu finden und sollte relativ einfach in diesen Happyforms Filter übertragbar sein, viel Erfolg dabei.

    Am Rande bemerkt, die WordPress Liste ist in aktuellen WordPress Versionen in der Option [FONT=Courier New]disallowed_keys[/FONT] gespeichert. Vor WordPress 5.5.x hiess die Option [FONT=Courier New]blacklist_keys[/FONT], aber da gab es dann "politische Korrekturen" in der Bezeichnung des Datenbankfeldes... Das sollte man also beachten, wenn man Code für auch ältere Core Versionen schreibt.

  • Hab den Hinweis von @b3317133 mal aufgeschnappt und schnell was hingeworfen:

    Völig ungetestet,5 .5 ist Minimum, aber du hast ja geschrieben dass dir schon tipps / ideen reichen :-)

    Digitaler Rucksack Nomade

  • Hab den Hinweis von @b3317133 mal aufgeschnappt und schnell was hingeworfen:


    Danke!
    Diesen Code hatte ich auch probiert und wollte ihn gerade einstellen. Du warst schneller :-)
    Leider geht die Nachricht normal durch, aber das Formular bleibt nach dem Absenden grau; keine Ahnung warum. Im Vergleich wird ein Kommentar mit dem gleichen Spambegriff korrekt blockiert.

  • Fast ist es geschafft! Ich habe vom Entwickler noch ein Codebeispiel bekommen und für meine Zwecke angepasst:

    In meinem Zusatz-Plugin habe ich den Code eingebaut und es funktioniert soweit recht gut. Kleiner Nachteil: Der Absender bekommt auch im Fehlerfall (Treffer aus der Blacklist) eine Bestätigungsmail. An den Admin wird in diesem Fall nichts gesendet.
    Jetzt suche ich noch nach einer Möglichkeit, die Bestätigungsmail im Fehlerfall nicht zu senden und eine Meldung im Formular auszugeben. Den Code verstehe ich leider nur teilweise. Mit Javascript hat das bisher nicht geklappt. Wenn noch jemand dazu eine Idee hat, wäre ich dankbar.

  • Nach kurzem Blick in den PHP Code des HappyForms Plugins gibt es dort neben

    [FONT=Courier New]happyforms_email_alert[/FONT] "Send a confirmation email to the site owner."

    auch noch einen
    [FONT=Courier New]
    happyforms_email_confirmation[/FONT] "Send a confirmation email to the user submitting the form."

    Filter, evtl. musst Du den auch nutzen.

  • Danke für den Tipp. Wie ich den Filter nutzen kann, habe ich leider nicht herausgefunden. Als Übergangslösung würde es auch reichen, wenn im Fehlerfall (Blacklist) ein Popup-Fenster darauf hinweist, dass die Nachricht nicht versendet wurde. Es geht zwar immer noch eine Bestätigungsmail an den Absender, aber damit kann man leben.
    Bei Einfügen des JS-Codes wird zwar trotzdem die Bestätigungsmail versandt, aber das Formular hängt und bleibt grau.
    Hier ein Auszug:

    PHP
    if ( preg_match( $pattern, $message ) ) {
                $email_message->set_to( '' );
                echo '<script>alert("Auf OK klicken")</script>';
            }

    Weißt du, an was das liegt und wie man das Popup-Fenster aktivieren kann?

    1. Die Filter sind nicht zur Ausgabe von JavaScript o.ä. gedacht.
    2. Der zweite Filter wird wie der erste Filter verwendet, kann man anhand des PHP Codes von HappyForms nachvollziehen...
  • Super! Danke!!! Jetzt wird im Fehlerfall keine Nachricht an den Absender des Formulars versandt.
    Hier der aktuelle Code:

    Ein kleiner Schönheitsfehler ist noch die Versand-Bestätigung im Formular (siehe Bild), welche ich gerne ausblenden oder noch besser mit einem Fehlerhinweis überschreiben würde.

    Mit dieser Funktion kann ich zumindest die Meldung ausblenden:

    Weißt du, an welcher Stelle ich das im Code einbauen muss?
    Hier der Link zur Testsite in meiner Cloud, wenn du mal gucken willst:
    https://cloud.m266.de/index.php/s/gjzoFrbFmoBS462

    Vielen Dank für deine bisherige Hilfe!

  • keine gute Idee, 2x dieselbe function zu beschreiben, fasse es doch in eine Funktion und setze diese nur in die 2 Filter:

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • keine gute Idee, 2x dieselbe function zu beschreiben


    Das habe ich mir schon gedacht, wusste aber nicht, wie ich die beiden Teile in eine Funktion setzen kann (kam bisher in meinem bescheidenen Programmier-Leben noch nicht vor). Herzliche Dank, Maxe.
    Das ist der aktuelle Stand:

    Für das letzte Problem (Meldung bei Spam im Formular anzeigen) hat mir einer der Plugin-Entwickler ein Snippet zugesagt. Bin gespannt, ob das alles wie gewünscht läuft.

    Am Ende wird alles in mein Plugin eingebaut.

    Vielen Dank an alle, welche mich unterstützt haben!

  • Geschafft!
    Einer der Plugin-Entwickler hat mir einen Filter zur Verfügung gestellt, der wunschgemäß funktioniert: Wenn Begriffe im Feld "Nachricht" in der Blacklist gefunden werden, blockt das Script das Versenden von Mails ab und gibt die übliche Fehlermeldung im Formular aus.
    Hier der Code, welcher in mein Plugin integriert wurde:

    Tutorial zum Formular-Plugin...
    Mein Plugin "WP H-Happyforms Tools"...

    Ich bin von CF 7 weggegangen und finde die Erstellung von Formularen mit Happyforms deutlich. In der Freeware-Version ist "Happyforms" nicht so leistungsfähig wie CF 7, aber in den meisten Fällen reichen die Optionen aus. CF 7 ist weitverbreitet und beliebt - aber auch bei den Spammern. Da gab es schon öfter Probleme und die Provider sperrten den Mailversand. Wen es näher interessiert, der kann Happyforms ja bei einer Testsite ausprobieren.

Jetzt mitmachen!

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