Der Screenshot zeigt eindeutig, dass es sich um das Kommentarformular und nicht um ein Kontaktformular handelt.
Beiträge von m266
-
-
Es sind sinnfreie Spams ohne Links und Captcha ist nicht gerade benutzerfreundlich. Ich frage mich nur, was hinter dieser Spam-Methode steckt.
-
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:PHP
Alles anzeigen/* Feld "Nachricht" wird mit Kommentar-Blacklist abgeglichen Credits/Special thanks: Ignazio Setti https://thethemefoundry.com/ Das Plugin ist für die Feldnamen "multi_line_text_4" und "multi_line_text_5" vorbereitet. Bitte bei Bedarf hier im Script anpassen. Nach einem Plugin-Update ist dieser Vorgang aktuell zu wiederholen. */ function blacklist_no_message( $email_message ) { $message = ''; // Feldnamen bei Bedarf nachfolgend anpassen if ( isset( $email_message->message['multi_line_text_4'] ) ) { $message = $email_message->message['multi_line_text_4']; } elseif ( isset( $email_message->message['multi_line_text_5'] ) ) { $message = $email_message->message['multi_line_text_5']; } if ( empty( $message ) ) { return $email_message; } $mod_keys = trim( get_option( 'disallowed_keys' ) ); if ( '' === $mod_keys ) { return $email_message; } foreach ( explode( "\n", $mod_keys ) as $word ) { $word = trim( $word ); $length = strlen( $word ); if ( $length < 2 or 256 < $length ) { continue; } $pattern = sprintf( '#%s#i', preg_quote( $word, '#' ) ); if ( preg_match( $pattern, $message ) ) { $email_message->set_to( '' ); } } return $email_message; }; add_filter( 'happyforms_email_alert', 'blacklist_no_message'); add_filter( 'happyforms_email_confirmation', 'blacklist_no_message');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!
-
Hallo zusammen,
ich bekomme häufig auf verschiedenen Website seltsame Spams, welche keinen Sinn ergeben. Die Mailadressen sind i. d. R. gefälscht und die IPs blende ich grundsätzlich aus, wobei sie auch üblicherweise gefälscht sind. Hat das jemand von euch auch beobachtet?
-
Super! Danke!!! Jetzt wird im Fehlerfall keine Nachricht an den Absender des Formulars versandt.
Hier der aktuelle Code:PHP
Alles anzeigen/* Feld "Nachricht" wird mit Kommentar-Blacklist abgeglichen Credits/Special thanks: Ignazio Setti https://thethemefoundry.com/ Das Plugin ist für die Feldnamen "multi_line_text_4" und "multi_line_text_5" vorbereitet. Bitte bei Bedarf hier im Script anpassen. Nach einem Plugin-Update ist dieser Vorgang aktuell zu wiederholen. */ add_filter( 'happyforms_email_alert', function( $email_message ) { $message = ''; // Feldnamen bei Bedarf nachfolgend anpassen if ( isset( $email_message->message['multi_line_text_4'] ) ) { $message = $email_message->message['multi_line_text_4']; } elseif ( isset( $email_message->message['multi_line_text_5'] ) ) { $message = $email_message->message['multi_line_text_5']; } if ( empty( $message ) ) { return $email_message; } $mod_keys = trim( get_option( 'disallowed_keys' ) ); if ( '' === $mod_keys ) { return $email_message; } foreach ( explode( "\n", $mod_keys ) as $word ) { $word = trim( $word ); $length = strlen( $word ); if ( $length < 2 or 256 < $length ) { continue; } $pattern = sprintf( '#%s#i', preg_quote( $word, '#' ) ); if ( preg_match( $pattern, $message ) ) { $email_message->set_to( '' ); } } return $email_message; } ); /////////////////////////// add_filter( 'happyforms_email_confirmation', function( $email_message ) { $message = ''; // Feldnamen bei Bedarf nachfolgend anpassen if ( isset( $email_message->message['multi_line_text_4'] ) ) { $message = $email_message->message['multi_line_text_4']; } elseif ( isset( $email_message->message['multi_line_text_5'] ) ) { $message = $email_message->message['multi_line_text_5']; } if ( empty( $message ) ) { return $email_message; } $mod_keys = trim( get_option( 'disallowed_keys' ) ); if ( '' === $mod_keys ) { return $email_message; } foreach ( explode( "\n", $mod_keys ) as $word ) { $word = trim( $word ); $length = strlen( $word ); if ( $length < 2 or 256 < $length ) { continue; } $pattern = sprintf( '#%s#i', preg_quote( $word, '#' ) ); if ( preg_match( $pattern, $message ) ) { $email_message->set_to( '' ); } } return $email_message; } );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:
PHP
Alles anzeigen// Versand-Bestätigung aus dem Formular ausblenden function wphhft_remove_message-notices() { ?> <style> .happyforms-message_notices { display: none !important; } </style> <?php } add_action('wp_enqueue_scripts', 'wphhft_remove_message_notices');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/gjzoFrbFmoBS462Vielen Dank für deine bisherige Hilfe!
-
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:PHPif ( 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?
-
Fast ist es geschafft! Ich habe vom Entwickler noch ein Codebeispiel bekommen und für meine Zwecke angepasst:
PHP
Alles anzeigenadd_filter( 'happyforms_email_alert', function( $email_message ) { $message = ''; // Feldnamen bei Bedarf nachfolgend anpassen if ( isset( $email_message->message['multi_line_text_4'] ) ) { $message = $email_message->message['multi_line_text_4']; } elseif ( isset( $email_message->message['multi_line_text_5'] ) ) { $message = $email_message->message['multi_line_text_5']; } if ( empty( $message ) ) { return $email_message; } $mod_keys = trim( get_option( 'disallowed_keys' ) ); if ( '' === $mod_keys ) { return $email_message; } foreach ( explode( "\n", $mod_keys ) as $word ) { $word = trim( $word ); $length = strlen( $word ); if ( $length < 2 or 256 < $length ) { continue; } $pattern = sprintf( '#%s#i', preg_quote( $word, '#' ) ); if ( preg_match( $pattern, $message ) ) { $email_message->set_to( '' ); } } return $email_message; } );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. -
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. -
Habe es leider nicht geschafft, diese Funktion in das Plugin Happyforms einzubinden. Schade.
Ich gebe auf :-( -
Vielen Dank! Liest sich gut; ich versuche es.
-
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. -
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 vorhandenIch 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. -
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?PHPadd_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! -
Beim genannten Link ist ein [FONT=Courier New]!important[/FONT] nicht nötig.
Hast recht. Möglicherweise hat mich zuvor der Cache zum Narren gehalten. Es läuft nun wie gewünscht auch ohne important.
Vielen Dank für deine Hilfe. -
tja ein link zur webseite wo eine tabelle ist, würde sicher weiterhelfen ,)
Hier noch ein Link für dich (es funktioniert ja inzwischen). -
Danke b3317133!
Das hatte ich schon erfolglos versucht, nun aber "!important" drangehängt. Und es geht :-)
Dass ich da nicht früher drauf gekommen bin.
Vielen Dank! -
Hallo zusammen,
ich will global allen Tabellen einen weißen Hintergrund geben, damit sich die Tabelle vom Inhalt abhebt. Im Editor geht das natürlich für einzelne Tabellen, aber im Customizer bekomme ich es nicht hin. Es muss die Anweisung "background-color: #ffffff;" für alle Tabellen rein. Die lange Suche im Forum und Netz hat mich nicht weiter gebracht. Hat jemand den richtigen Tipp für mich?
Vielen Dank. -
Im Laufe von 12 Jahren hat sich einiges in der Website angesammelt und sie ist sehr große geworden. Deshalb mache ich einen Neuanfang mit Bereinigung, wobei dies wieder viel Arbeit bedeutet. Ich denke, es muss sein. Eine komplette Übernahme der Inhalte würde mit der Neustrukturierung auch Zeit kosten und sicher jede Menge Broken Links erzeugen. Bei einem Neuanfang kann man auch Altlasten entsorgen.
-
Okay. Du hast weiterhin nichts zu das Verhältnis gesagt von "kommt rüber", "kommt weg". Ist das ein reines WordPress oder nutzt du noch irgendwie einen Pagebuilder, Medienverwalter, Slider usw?
Wieviel Inhalte übernommen werden, kann ich noch nicht sagen. Alte Tutorials sind u. U. noch teilweise gültig, so dass ich sie nicht löschen will, sondern als PDF-Archiv mit einem Hinweis erhalte. Die Website ist ohne PageBuilder aufgebaut und benutzt den Classic Editor.Die könntest du doch dann nach "nicht verknüpft" filtern und löschen.
Das funktioniert nach meiner Erfahrung nicht immer: Oft werden Bilder als "nicht verknüpft" in der Mediathek angezeigt, sind aber doch verlinkt. Da bleibt nur Handarbeit.Siehe oben: Entweder Komplettkopie Website und dann "ausmisten" oder selektiv Export/Import einzelner Inhalte mit den passenden Bildern, erfordert dann wie beschrieben etwas Beschäftigung mit den genannten Plugins.
So wird es wohl ausgehen und mich einige Wochen beschäftigen. Manchmal ist es Zeit für einen harten Schnitt und Neuanfang. Dabei kann man auch nicht (mehr) benötigte Inhalte entsorgen. Die neue Website ist mit Verweis auf die Migration in Arbeit. Danke für eure Hinweise. -
Seiten löschen ist nicht das Problem. Die nicht mehr benötigten Bilder muss ich raussuchen und über die Mediathek löschen. Da steckt Arbeit drin.
Die Seiten mit Bildern sollen in geänderter Struktur zur neuen Website umgezogen werden. Natürlich kann ich mit Export/Import alle Inhalte übertragen, ausmisten und dann neu zuordnen. Dies macht aber bei den vielen Seiten und Bildern eine Menge Arbeit. Insgesamt ist die Website einige GigaByte groß. Deshalb suche ich nach einem Weg, die Inhalte ohne Copy & Paste zu übertragen. Ein Beispiel ist dieses Tutorial: Es enthält 13 Unterseiten mit zahlreichen Bildern. Die Seiten kann ich im Textmode schnell kopieren, aber die Bilder muss ich herunterladen, neu hochladen und verknüpfen. An diesem Beispiel kannst du erkennen, was ich meine.
Nicht mehr gepflegte Inhalte sowie die alte Website werden als PDF-Archiv noch eine Weile verfügbar sein.