Jump to content

Google Captcha einbinden


brand68

Recommended Posts

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

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

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

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

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

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...