brand68 Posted March 19, 2018 Share Posted March 19, 2018 Hallo zusammen Ich nutze noch eine alte Version, die 1.6.1.9. Werde von Russland zugespamt, bzw. aus dem Kontaktformular heraus werde ich indirekt zugespamt. Habe mir das Google Captcha runtergeladen. Den folgenden Code habe ich im contact-form.tpl habe ich den folgenden Code an der untersten Zeile - also vor dem </form eingefügt: <script src='https://www.google.com/recaptcha/api.js'></script> <div class="g-recaptcha" data-sitekey="mein Schlüssel"></div> </form> {/if} Das Captcha wird angezeigt und funktioniert, jedoch wird die Nachricht trotzdem gesendet, auch wenn das Captcha nicht angeklickt wird. In welchem File muss ich denn dieses noch hinterlegen? Ich habe mal gelesen im Ordner Override, Files Authcontroller oder ContactController.... Was muss ich denn dort für einen Code hinterlegen und wo? Ich finde diese File gar nicht. Ich danke für eure Hilfe und grüsse euch Marc Link to comment Share on other sites More sharing options...
Whiley Posted March 19, 2018 Share Posted March 19, 2018 Hallo brand68, @eleazar hat hier mal eine Anleitung gepostet: https://www.prestashop.com/forums/topic/664420-captcha-kontaktformular/?do=findComment&comment=2684737 Nach meiner Erfahrung hilft eine Captcha-Lösung nur für ein paar Tage, auch die im PS1.6.1.18 integrierte Honeypot-Lösung wird schnell umgangen. Wenn du eh keine Russlandgeschäfte machst und deine Ziel-Emailadressen die Endekennung .ru haben, ist es das einfachste und sicherste .ru generell zu sperren. Grüsse Whiley Link to comment Share on other sites More sharing options...
brand68 Posted March 19, 2018 Author Share Posted March 19, 2018 Super, danke dir Whiley und natürlich auch Dank an elezar Und wo sperre ich den die Russen generell ? Link to comment Share on other sites More sharing options...
brand68 Posted March 19, 2018 Author Share Posted March 19, 2018 Sorry, auch mit der Anleitung ein klares Nein. Habe die Codes eingefügt und die beiden Dateien AuthController und ContactController im Ordner hinzugefügt, wahrscheinlich nicht tauglich für eine solch alte Prestashop Version denke ich. Schade. Link to comment Share on other sites More sharing options...
Whiley Posted March 19, 2018 Share Posted March 19, 2018 Die Sperre bringst du am besten dort an wo die email-Adresse auf Gültigkeit überprüft wird. Dazu öffnest du die Datei: /classes/Validate.php Dort trägst du an der Stelle wo die email überprüft wird zätzlich eine if - Anweisng mit Rücksprung ein, das sollte dann etwa so aussehen: /** * Check for e-mail validity * * @param string $email e-mail address to validate * @return bool Validity is ok or not */ public static function isEmail($email) { if ($email!=str_replace(".ru","",$email)) { return false; } return !empty($email) && preg_match(Tools::cleanNonUnicodeSupport('/^[a-z\p{L}0-9!#$%&\'*+\/=?^`{}|~_-]+[.a-z\p{L}0-9!#$%&\'*+\/=?^`{}|~_-]*@[a-z\p{L}0-9]+(?:[.]?[_a-z\p{L}0-9-])*\.[a-z\p{L}0-9]+$/ui'), $email); } Nach dieser Änderung die Caches löschen und ganz unbedingt auch m Ordner "cache" der direkt im root-Verzeichnis liegt die Datei "class_index.php" löschen! Das Ergebnis kannst du überprüfen, indem du selbst eine Adresse mit mail.ru im Kontaktformular eingibst. Grüsse Whiley Link to comment Share on other sites More sharing options...
brand68 Posted March 19, 2018 Author Share Posted March 19, 2018 Super, danke dir vielmals. Übrigens, ich denke, dass der Code bei mir nicht funktioniert, liegt daran, dass ich diesen in der letzten Zeile untergebracht habe. Kann dies sein? Link to comment Share on other sites More sharing options...
brand68 Posted March 19, 2018 Author Share Posted March 19, 2018 Hallo Whiley Es ist mir absolut klar, dass es für einen Profi nicht einfach ist, sich in einen Anfänger reinzudenken, deshalb lese ich ja auch viele Anleitungen, die so nicht umsetzbar sind. Nachdem ich die Codezeile mit deinem Code ergänzt habe: if ($email!=str_replace(".ru","",$email)) { return false; Ging gar nichts mehr, Ich musste sie wieder entfernen. Ich versuche es mal im englischen Forum, vielleicht hat es dort genügend Anfänger wie mich, oder zumindest das Verständnis Danke trotzdem Link to comment Share on other sites More sharing options...
Whiley Posted March 19, 2018 Share Posted March 19, 2018 Na, da fehlt ja einfach mal eine geschweifte Klammer am Schluss Und wenn du dann nicht - wie oben beschrieben die class_index.php löscht gibts auch einfach eine weisse Seite Link to comment Share on other sites More sharing options...
brand68 Posted March 20, 2018 Author Share Posted March 20, 2018 Stimmt, mit der geschweiften Klammer am Schluss bleibt die Seite nicht mehr weiss, funktionieren tut es aber dennoch nicht. Im Kontaktformular kann auch eine E-Mail mit der Endung .ru erfasst werden, ohne Probleme... Link to comment Share on other sites More sharing options...
Whiley Posted March 20, 2018 Share Posted March 20, 2018 vor 5 Stunden schrieb brand68: funktionieren tut es aber dennoch nicht. Was sollte an dem Code nicht funktionieren? Hast du tatsächlich alle Caches u. die o.a. Datei gelöscht? Ich habe den Code gerade mal im Demo-Shop eingetippt, hier kannst du dir das Ergebnis anschauen: http://quintilius-varus.de/kontaktieren-sie-uns Grüssse Whiley Link to comment Share on other sites More sharing options...
brand68 Posted March 20, 2018 Author Share Posted March 20, 2018 Bei mir sieht der Code so aus - grün eingefärbt der Ergänzung. In meinem Kontaktformular https://www.tee-online.ch/de/kontaktieren-sie-uns kann jeder Russe frischfröhlich seinen Spam unterbringen. Aber - dank deiner Hilfe, funktioniert jetzt das Captcha. Denn mit dem Löschen der obenerwähnten Datei hat dies nun plötzlich funktioniert. Aber nur beim Kontaktformular, jetzt will es auch bei der Kundenanmeldung ein Captcha, was mich wirklich zum verzweifeln bringt. Bei der Authentication.tpl habe ich die Code Zeile wie von alezar beschrieben für das Captcha wieder entfernt, Zeigen tut er kein Captcha, fragt aber im Hintergrund dieses ab, denn ich komme nicht weiter. Es ist wirklich übel... /** * Check for module URL validity * * @param string $url module URL to validate * @param array $errors Reference array for catching errors * @return bool Validity is ok or not */ public static function isModuleUrl($url, &$errors) { if ($email!=str_replace(".ru","",$email)) { return false;} if (!$url || $url == 'http://') { $errors[] = Tools::displayError('Please specify module URL'); } elseif (substr($url, -4) != '.tar' && substr($url, -4) != '.zip' && substr($url, -4) != '.tgz' && substr($url, -7) != '.tar.gz') { $errors[] = Tools::displayError('Unknown archive type'); } else { if ((strpos($url, 'http')) === false) { Link to comment Share on other sites More sharing options...
Whiley Posted March 20, 2018 Share Posted March 20, 2018 Wie im Post #5 beschrieben geht es um die Validierung der email-Adresse, nicht der url! Du hast die Veränderungen an der falschen Stelle vorgenommen!!! Link to comment Share on other sites More sharing options...
brand68 Posted March 20, 2018 Author Share Posted March 20, 2018 Aha, und schon funktioniert es. Herzlichen Dank und einen sonnigen Tag Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now