Der größte unabhängige deutsche Kitereisen-Blog - 296 Kitepots - 745 Reiseberichte.

Joomla 1.5 Kontaktformular Anti-Spam

Post
#280
2212
2008
Mo
20:20
Tag
563
34.55 k views

Mich nervt der Spam über das Kontaktformular von Joomla. Höllisch. Alle Captchas oder Spamfilter die ich ausprobiert habe funktionieren entweder gar nicht oder nicht richtig, dazu sind sie fast alle sehr schwer zu integrieren. Accessibility-Probleme liefern die meisten noch frei Haus dazu. Mir reicht’s.

Joomla 1.5 Kontaktformular Anti-Spam: Wird eine Rechenaufgabe nicht richtig gelöst, wird keine Email versandt. Joomla Kontaktformular Anti-Spam ist in 10 Minuten einfach zu integrieren. Nur eine Core datei muss modifiziert werden. Ja, ich weiss, auch Rechenaufgaben können geknackt werden. Doch die Wahrscheinlichkeit ist sehr gering. Mein Kontaktformular läuft seit zwei Jahren vollkommen spamfrei. Demos auf aaateam24.com und uebersetzer-und-dolmetscher.com

Installation Joomla Kontaktformular Anti-Spam

1. Kontaktformular erweitern. Ich benutze ein eigenes default_form.php Template in meinem Templateordner unter templates/XYZ/html/com_contact/contact/default_form.php. Sollte Ihr Template keine gesonderte default_form.php im Template-Ordner haben, so müssen Sie die Datei /components/com_contact/views/contact/tmpl/default_form.php editieren.

1.1 Suchen Sie den Submit Button für das Formular. Im Joomla 1.5 Standard-Kontakt-Formular ist das folgendes:

<button class="button validate" type="submit">
<?php echo JText::_('Send'); ?>
</button>

Generell kann man das Spamcheck-Feld überall innerhalb der form einbauen, ich rate genau vor dem obigen dazu.

1.2 Fügen Sie vor dem Absende-Button-Code folgendes ein:

<?php
  	$spamchecknr1 = mt_rand(1, 20);
	$spamchecknr2 = mt_rand(1, 20); 
	echo "<input type=\"hidden\" name=\"spamcheckresult\" value=\"".base64_encode($spamchecknr1+$spamchecknr2)."\" />";
	echo "<label for=\"spamcheck\">Spamcheck*: ".$spamchecknr1." plus ".$spamchecknr2." = </label>";
  	echo "<input type=\"text\" name=\"spamcheck\" id=\"spamcheck\" size=\"30\" class=\"inputbox required\" value=\"\" />";
?>

2. controller.php erweitern. Die Datei controller.php im Ordner /components/com_contact regelt unter Joomla 1.5 das Versenden der Emails über das Kontaktformular. Hier müssen Sie den Spamcheck einbauen. Es müssen drei Stellen editiert werden.

2.1 Suchen Sie

$email=JRequest::getVar('email','','post' );

Fügen Sie danach ein:

$spamcheckresult = base64_decode(JRequest::getVar( 'spamcheckresult','','post' ));
$spamcheck = JRequest::getVar( 'spamcheck','','post' );

2.2 Suchen Sie

if  (!$this->_validateInputs( $contact, $email, $subject, $body)) {

Ersetzen Sie diese Zeile durch

if  (!$this->_validateInputs( $contact, $email, $subject, $body , $spamcheck, $spamcheckresult) ) {

2.3 Suchen Sie

if ( strpos( $email, ';' ) || strpos( $email, ',' ) || strpos( $email, ' ' ) || count( $check ) > 2 ) {
	$this->setError( JText::_( 'You cannot enter more than one email address', true ) );
	return false;
}

Fügen Sie darunter ein

if ((is_nan($spamcheckresult))||($spamcheckresult!=$spamcheck)) {
	$this->setError( JText::_( 'Spamcheck', true ) );
	return false;
}

3. Sprachfile ergänzen Um eine entsprechende Fehlermeldung bei falscher Eingabe im Feld Spamcheck zu aktiverien sollte noch das Language File de-DE.com_contact.ini im Ordner /language/de-DE (plus ggf weitere Language files) ergänz werden. Fügen Sie an einer beliebigen Stelle ein:

SPAMCHECK=Sie haben eine falsche Zahl beim Spamcheck eingetragen!

Das war’s auch schon. Ab sofort versendet Ihr Joomla Kontaktformular Emails nur noch, wenn die Rechenaufgabe korrekt gelöst wurde. Aller Code ohne jegliche Gewähr! Einsatz auf eigenes Risiko. Support biete ich gegen den üblichen Stundensatz, siehe ff-webdesigner.de. Wenn Ihnen das Joomla 1.5 Kontaktformular Anti-Spam-Script geholfen hat, freu ich mich jederzeit über Backlinks auf ff-webdesigner.de!

P1010766
P1010767


Rate it!

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne
Loading...

16 Kommentare

  • siti schreibt am Samstag, 31.1.2009 um 4:13 Uhr:

    Hallo,

    habe das mal so alles einfügt, es funzt und bin begeistert. Ich werde mich Mitte des Jahres noch mal melden (mein Joomla wird erst Anfang April richtig Online gehen), betreffs Auswertung Spam. Natürlich nur wenn ich mich nicht aufdränge!
    Klasse gemacht von Ihnen, mir als Nichtswisser hilft das sehr.

    Mit freundlichen Grüßen

  • Anton schreibt am Mittwoch, 4.2.2009 um 13:52 Uhr:

    Hallo,

    habe dass auch eingefügt, leider funktioniert es nicht richtig also wenn ich ne falsche zahl schreibe wird die mail trozdem abgeschickt. woran kann es liegen.

    Kann mir jemand helfen?

    Mit freundlichen grüßen Anton

  • Olf schreibt am Mittwoch, 8.4.2009 um 10:48 Uhr:

    Hallo zusammen … coole Idee mit dem Rechner … funktioniert auch schon fast bei mir .. (erhalte keine Fehlermeldung bei Falscheingabe, aber das findet sich). und das mir als DAU…

  • ff-webdesigner schreibt am Donnerstag, 9.4.2009 um 15:46 Uhr:

    keine Fehlermeldung: Punkt 2.3 beachten. Ausserdem muss im Joomla Template ein Markup für die Fehlerausgabe vorhanden sein. das da lautet: spitze klammer auf jdoc:include type=”message” / spitze klammer zu wenn ich mich recht entsinne.

  • Martin schreibt am Dienstag, 12.5.2009 um 11:39 Uhr:

    Hallo,

    ich denke es fehlt noch eine kleine Ergänzung die evtl. nicht selbstverständlich ist, ich habe auch eine Weile gebraucht bis ich drauf gekommen bin.

    Die Zeile (ca. 306):
    function _validateInputs( $contact, $email, $subject, $body )

    ersetzen mit:
    function _validateInputs( $contact, $email, $subject, $body , $spamcheck, $spamcheckresult)

    Dann dürfte alles reibungslos funktionieren. Schönes Script. Einfach und funktioniert. Toll wäre es wenn die Fehlermeldung ausgegeben wird ohne dass die Eingaben weg sind, aber das kann man sich ja mit ein wenig Grundkenntnissen in PHP im Prinzip auch selbst erarbeiten.

    LG
    Martin

  • ff-webdesigner schreibt am Donnerstag, 14.5.2009 um 11:20 Uhr:

    steht oben unter punkt 2.2!

  • Tommy37 schreibt am Dienstag, 28.7.2009 um 23:57 Uhr:

    Hallo, dachte das wäre die Lösung, aber irgendwie kann ich Zahlen eingeben wie ich will, Formular wird abgeschickt und kommt auch an.

    10 plus 15= 25
    Ich gebe ein um zu testen: 10
    abgeschickt und angekommen.

    Joomla 1.5.13 stable german

    Jemand ne Idee, wäre schön, Danke!

    Gruß
    Tommy37

  • Britta schreibt am Donnerstag, 6.8.2009 um 19:35 Uhr:

    Moinsen!
    Sehr schöne Anleitung, sehr gut nachzubauen, aber leider auch bei mir: falsche Lösung und E-Mail wird trotzdem versendet…
    Viele Grüße!

  • Beedu schreibt am Sonntag, 14.2.2010 um 14:35 Uhr:

    Uups, sorry in der Hitze des Gefechts…. folgende Ergänzung ist notwendig.

    In controller.php suchen nach:
    function _validateInputs( $contact, $email, $subject, $body )

    Ersetzen mit:
    function _validateInputs( $contact, $email, $subject, $body, $spamcheck, $spamcheckresult )

  • Apfelsinchen schreibt am Mittwoch, 10.3.2010 um 16:59 Uhr:

    Hallo zusammen! Das ist wirklich eine supertolle Anleitung, die sogar ich umsetzen konnte (weiss nicht mal, was PHP genau macht..) Vielen herzlichen Dank dafür!!!

    Aaaber ein grosses Problem habe ich noch und zwar, dass immerhin alles funktioniert, aber bei einer Fehleingabe alle Daten futsch sind.. :-( Das muss doch irgendwie machbar sein, dass man nicht immer alles nochmal schreiben muss, wenn man mal falsch rechnet?

    Liebe Grüsse vom Apfelsinchen

  • madl schreibt am Montag, 22.3.2010 um 15:08 Uhr:

    Halli, hallo
    vielen Dank für die Anleitung hat mir sehr geholfen und funktioniert!
    lg
    madl

  • D. Liechti-Zuber schreibt am Freitag, 26.3.2010 um 14:33 Uhr:

    Das nenne ich eine Spitzen-Anleitung… Toll gemacht!
    Ich muss mich der Frage von Apfelsinchen anschliessen: Wie kann man das verhindern, dass bei einer Fehleingabe alle Daten gelöscht werden?

  • Philipp schreibt am Donnerstag, 19.1.2012 um 13:50 Uhr:

    Super Anleitung, klappt tatsächlich. Nur dass bei falscher Eingabe die Daten weg sind ist ein bisschen doof. Da gibts bestimmt auch ne PHP Programmierung.
    Wenn Du das auch noch hinbekommst?!! Das wär klasse.
    Besten Dank

  • ff-webdesigner schreibt am Donnerstag, 19.1.2012 um 16:13 Uhr:

    klar, krieg ich das hin :-) geht via cookies und sessions, etwas aufwändiger, aber dann bleiben alle eingaben erhalten. dauert ca 3h, kontaktier mich für ein angebot!

  • David Isler schreibt am Sonntag, 19.2.2012 um 13:53 Uhr:

    Dafür gibts ne einfache Lösung. In der Fehlermeldung mitteilen, dass man für die Korrektur “Back” drücken kann. Die Daten sind noch drin und man kann den Spamcheck korrigeren und versenden.

  • Stemmi schreibt am Dienstag, 26.2.2013 um 19:29 Uhr:

    Klappt bestens! Danke…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Cookie Consent mit Real Cookie Banner