+ Antworten
Seite 1 von 12 1 2 3 4 5 11 ... LetzteLetzte
Ergebnis 1 bis 10 von 114

Thema: Kontaktformular endlich einfach spamfrei

  1. #1
    Neu an Board
    Registriert seit
    11.12.2008
    Beiträge
    10
    Bedankte sich
    1
    Erhielt 2 Danksagung
    in 1 Beitrag

    Ausrufezeichen Kontaktformular endlich einfach spamfrei

    Mich nervt der Spam über das Kontaktformular von Joomla schon lange. 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. Ich schreib was eigenes.

    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.

    Wie man die Lösung einbaut findet ihr hier:
    http://blog.ff-webdesigner.de/world-...anti-spam.html
    Einfach gutes Webdesign und Joomlatemplates
    http://ff-webdesigner.de

  2. Erhielt Danksagungen von:


  3. #2
    Joomla Guru Avatar von elkuku
    Registriert seit
    14.06.2006
    Ort
    Guayaquil - GMT -5 ~ 40ºC
    Beiträge
    2.183
    Bedankte sich
    91
    Erhielt 667 Danksagungen
    in 515 Beiträgen

    Standard

    Ja also... die Idee mit der Rechenaufgabe ist ja nicht neu..

    Das tolle an J 1.5 ist: Du brauchst 'eigentlich' keine Corehäcks mehr....

    Die Theorie:
    Das ganze ist über ein System plugin zu lösen.
    1) Es gibt die Klasse JResponse die Dir mit der Funktion getBody() den gesamten Inhalt des <body>s liefert.
    in onAfterRender() suchst Du dann nach dem Absendeknopf im Kontaktformular und klebst davor Deine Rechenaufgabe.
    2) Der Controller aus com_contact deklariert einen onValidateContact() Trigger den Du in Deinem Plugin implementieren kannst und - falls einer nicht 1+1 zusammenzählen kann (oder will) bei einer JExeption (z.B.) den ganzen Vorgang abbricht.

    Da der Code nicht allzu lang ist poste ich ihn hier einmal (als Kommentar auf Deiner Seite bestimmt net so gut)
    Verbesserungsvorschläge sind willkommen ..
    PHP-Code:
    class plgSystem.... extends JPlugin
    {
        function 
    plgSystem....(& $subject$config)
        {
            
    parent::__construct($subject$config);
        }

        function 
    onAfterRender()
        {
            
    $spamchecknr1 mt_rand(120);
            
    $spamchecknr2 mt_rand(120); 

            
    $searchString '<button class="button validate" type="submit">';
            
            
    $addString '';
            
    $addString .= '<input type="hidden" name="spamcheckresult" value="'.base64_encode($spamchecknr1 $spamchecknr2).'" />';
            
    $addString .= '<label for="spamcheck">Spamcheck*: '.$spamchecknr1.' plus '.$spamchecknr2.' = </label>';
            
    $addString .= '<input type="text" name="spamcheck" id="spamcheck" size="5" class="inputbox required" value="" />';
            
    $addString .= '<br />';
            
            
    $body JResponse::getBody();
            
    $body str_replace($searchString$addString.$searchString$body);
            
    JResponse::setBody($body);
        }
    //function

        
    function onValidateContact$contact$post )
        {
            
    $spamcheckresult base64_decode(JRequest::getVar'spamcheckresult','','post' ));
            
    $spamcheck JRequest::getVar'spamcheck','','post' );
            
            
    $ret true;
            if((
    is_nan($spamcheckresult)) || ($spamcheckresult != $spamcheck))
            {
                
    JError::raiseWarning(100JText::_('You have not resolved our spamcheck'));
                
    $ret = new JException('Spamcheck');
            }

            return 
    $ret;
        }
    //function

    }//class 
    Und zum ausprobieren auch nochmal als installierbares Plugin.
    Angehängte Dateien
    Gruß,
    Nikolai
    Hilf mit: Deutsche Joomla! Dokumentation | Help testing: EasyCreator | Noch Fragen ? Forum.Joomla-Nafu.de | Steigere Dein Joomla! Level

  4. Erhielt Danksagungen von:


  5. #3
    Ria
    Ria ist offline
    Kommt häufiger vorbei
    Registriert seit
    12.09.2008
    Beiträge
    332
    Bedankte sich
    13
    Erhielt 17 Danksagungen
    in 15 Beiträgen

    Standard

    @ elkuku + @ ALL

    hallo sowas mit "Rechenaufgabe" das war's was ich seit Tagen suche.

    Denke, spambots können nicht rechnen und das ewige Rätselraten was für Buchstaben es denn sein sollen, möchte ich eben nicht den Usern zumuten!
    Werde das Teil noch Heute installieren.

    Nur noch eine Frage, das wird doch auch noch bei der 1.6 funktionieren? (Anfängerfrage, sorry)

    Und könnte man dies auch irgendwie für die Registrierung verwenden?
    (scheint wohl nötig, nach dem was ich im Forum gelesen habe
    Gruss Ria

  6. #4
    Ria
    Ria ist offline
    Kommt häufiger vorbei
    Registriert seit
    12.09.2008
    Beiträge
    332
    Bedankte sich
    13
    Erhielt 17 Danksagungen
    in 15 Beiträgen

    Standard

    Hallo,
    so habe es installiert, ist wunderbar elkuku.
    Vor allen Dingen auch schön dezent und nicht User-Abschreckend. In die Tonne mit den Buchstaben captchas

    @ ff-webdesigner
    so wie ich sehe hat Dir doch elkuku unter die Arme gegriffen?

    Da sehe ich mir die php Dateien auch erst mal selber an, wird zwar nicht viel bringen befürchte ich, werde dann aber mal weitersehen.

    Gruss Ria

  7. #5
    Ria
    Ria ist offline
    Kommt häufiger vorbei
    Registriert seit
    12.09.2008
    Beiträge
    332
    Bedankte sich
    13
    Erhielt 17 Danksagungen
    in 15 Beiträgen

    Standard

    Hallo,
    so scheint so, für die Registrierung nur eine Codezeile.

    Auch ohne
    mwst-freien sätzen
    von mir:

    einfach in der xml die description "login form" hinzufügen, fertig.

    Allerdings würde ich gerne die "Rechenaufgabe" von 0-20 einschränken (damit da keiner den Taschenrechner rausholen muss , finde aber auch nichts im Backend, noch im Code.

    Kann mir da jemand helfen, kann ja nicht viel sein?

    Gruss Ria

  8. #6
    Joomla Guru Avatar von elkuku
    Registriert seit
    14.06.2006
    Ort
    Guayaquil - GMT -5 ~ 40ºC
    Beiträge
    2.183
    Bedankte sich
    91
    Erhielt 667 Danksagungen
    in 515 Beiträgen

    Standard

    Hallo Ria,
    meinst Du, dass das Ergebnis der beiden Zahlen nicht grösser als 20 sein soll ?
    Die simpelste Lösung wäre dann, einfach die Werte im Code zu ändern..
    dort steht:
    mt_rand((1, 20)
    also Zahlen von 1 bis 20
    wenn Du dies jetzt in
    mt_rand(1, 10)
    änderst, gibt es halt höchstens
    10 + 10 = 20

    war's das ?

    Die ******s für den code gehen übrigens an den threadersteller. Ich hab's nur J!1.5 fähig gemacht
    Gruß,
    Nikolai
    Hilf mit: Deutsche Joomla! Dokumentation | Help testing: EasyCreator | Noch Fragen ? Forum.Joomla-Nafu.de | Steigere Dein Joomla! Level

  9. #7
    Ria
    Ria ist offline
    Kommt häufiger vorbei
    Registriert seit
    12.09.2008
    Beiträge
    332
    Bedankte sich
    13
    Erhielt 17 Danksagungen
    in 15 Beiträgen

    Standard

    Hallo elkuku,

    erst mal besten lieben Dank für die Antwort!

    Ich hab's nur J!1.5 fähig gemacht
    Na ja, muss man ja auch erst mal können.

    Muss mich auch noch entschuldigen, durch den oben erwähnten Eintrag in der xml von dem Teil, wird es leider nur in der Registrierung exact angezeigt.

    Leider funktioniert es (bin wohl doch zu blöd dafür) aber dann doch noch nicht.

    Denn die Registrierung geht auch, wenn man die Zahl nicht einträgt.

    Muss ich "easyspamkillercontact2" drausmachen (also duplizieren) und das Wort contact, da wo es vorkommt durch "login" ersetzen?

    Wäre sehr nett Du könntest dazu noch nen Tipp geben! Wäre toll das funktionierte dann auch für die Registrierung richtig

    Gruss Ria
    PS. ja Deine Antwort war genau richtig! Hoffe die Sicherheit bleibt trotzdem.

  10. #8
    Joomla Guru Avatar von elkuku
    Registriert seit
    14.06.2006
    Ort
    Guayaquil - GMT -5 ~ 40ºC
    Beiträge
    2.183
    Bedankte sich
    91
    Erhielt 667 Danksagungen
    in 515 Beiträgen

    Standard

    Du musst die Klasse noch um folgende Funktion erweitern:
    PHP-Code:
    function onBeforeStoreUser($user$isnew)
    {
        if( ! 
    $isnew ) { return true; }

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

        if((
    is_nan($spamcheckresult)) || ($spamcheckresult != $spamcheck))
        {
            echo 
    JText::_('You have not resolved our spamcheck');
            
    jexit();
        }

        return 
    true;
    }
    //function 
    weiter nichts
    Gruß,
    Nikolai
    Hilf mit: Deutsche Joomla! Dokumentation | Help testing: EasyCreator | Noch Fragen ? Forum.Joomla-Nafu.de | Steigere Dein Joomla! Level

  11. Erhielt Danksagungen von:


  12. #9
    Hat hier eine Zweitwohnung Avatar von CirTap
    Registriert seit
    12.12.2005
    Ort
    Karlsruhe
    Beiträge
    1.641
    Bedankte sich
    84
    Erhielt 552 Danksagungen
    in 444 Beiträgen

    Standard

    ROFL.
    Klar doch. Ist doch ganz einfach, Mensch!

    tach übrigenz!
    Joomla FAQ | CSS-Probleme? Verstehen Entdecken Anwenden Meistern

    "I love deadlines. I like the whooshing sound they make as they fly by." (Douglas Adams)
    Man kann Software schnell, gut und günstig schreiben, sich aber nur 2 Dinge aussuchen.


  13. #10
    War schon öfter hier Avatar von Luby
    Registriert seit
    31.03.2007
    Ort
    Witten
    Beiträge
    168
    Bedankte sich
    30
    Erhielt 35 Danksagungen
    in 24 Beiträgen

    Standard

    Hier hatten wir darüber gerätselt, ob man das ganze auch an mehrsprachigen Seiten einsetzen könnte und wie/wo könnte man dann die dazugehörige sprachdateien erstellen, z.B.:

    Code:
    SPAMCHECK= ??
    PLUS= ??
    YOU HAVE NOT RESOLVED OUR SPAMCHECK= ??
    Eine Lösung habe ich nicht gefunden, aber wenn in die language/xx-XX/com_users.ini und language/xx-XX/com_contact.ini Dateien um
    "YOU HAVE NOT RESOLVED OUR SPAMCHECK=hier die übersetzung" ergänzt, dann kriegt man wenigstens die Fehlermeldung übersetzt.

    Oder könnte man doch das Plugin auf mehrsprachigkeit umschreiben?

+ Antworten
Seite 1 von 12 1 2 3 4 5 11 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein