Mo
20:20
Tag
563
31071 views

Joomla 1.5 Kontaktformular Anti-Spam

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!



Bewerte diesen Beitrag auf blog.ff-webdesigner.de!

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne Bisher keine Bewertungen
Loading...

16 Kommentare zu “ Joomla 1.5 Kontaktformular Anti-Spam ”

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

Kommentar von siti am 31.1.2009

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

Kommentar von Anton am 4.2.2009

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…

Kommentar von Olf am 8.4.2009

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.

Kommentar von ff-webdesigner am 9.4.2009

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

Kommentar von Martin am 12.5.2009

steht oben unter punkt 2.2!

Kommentar von ff-webdesigner am 14.5.2009

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

Kommentar von Tommy37 am 28.7.2009

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!

Kommentar von Britta am 6.8.2009

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 )

Kommentar von Beedu am 14.2.2010

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

Kommentar von Apfelsinchen am 10.3.2010

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

Kommentar von madl am 22.3.2010

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?

Kommentar von D. Liechti-Zuber am 26.3.2010

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

Kommentar von Philipp am 19.1.2012

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!

Kommentar von ff-webdesigner am 19.1.2012

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.

Kommentar von David Isler am 19.2.2012

Klappt bestens! Danke…

Kommentar von Stemmi am 26.2.2013

Du hast was zu sagen? Dann schreib!

*

P1010766
P1010767