Auf meiner Magento-Site habe ich Captcha für das Erstellen eines Kontos für ein benutzerdefiniertes Design aktiviert, das ich von Grund auf neu erstellt habe (nicht "rwd"). Wenn ich jedoch versuche, einen Kunden mit der Angabe des korrekten Captcha-Codes im Feld zu registrieren, wird selbst dann "Falsch" angezeigt Captcha "nach dem Aktualisieren und Umleiten auf dieselbe Seite.
Keine Warnungen / Fehler im Client oder Server.
Kann mich jemand führen?
Antworten:
Sie können den Captcha-Check-Prozess durch Debuggen lösen.
Befolgen Sie daher bitte den folgenden Vorgang.
Magento
customer registration form's
Captcha wurde in der KlasseMage_Captcha_Model_Observer
auf FunktioncheckUserCreate()
mitcontroller_action_predispatch_customer_account_createpost
Ereignis überprüft .Dort prüft Magento den Captcha-Wert bei Verwendung von:
Das bedeutet hier, dass Magento den Wert des Feldes von sendet
captcha[user_create]
und das FeldMage_Captcha_Model_Zend
bei der Funktion übereinstimmtisCorrent()
Dieses Feld stimmt mit dem Sitzungswert überein.
Wert
Auf diese Weise können Sie verfolgen, wo das Problem liegt
quelle
Das Problem kann auf einen falschen Eingabefeldnamen verweisen (z. B.
name="captcha_user_create"
anstelle vonname="captcha[user_create]"
). Oder JS captcha initnew Captcha(...)
wird zweimal ausgelöst.Gibt es eine Datei
template/captcha/zend.phtml
in Ihrem benutzerdefinierten Thema?Verwenden Sie Captcha auf anderen Seiten (Passwort vergessen, Login)? Funktioniert es auf anderen Seiten richtig?
Verwenden Sie zwei Captchas auf einer Seite?
Stellen Sie außerdem sicher, dass Sie die
Mage_Captcha_Model_Zend::isCorrect
Methode nicht zweimal aufrufen , da dadurch der Captcha-Wert aus der Kundensitzung gelöscht wird. Wenn Sie dies tun, erhalten Sie immer die Meldung "Falsches CAPTCHA".quelle
Zeigen Sie Ihre Quelle an und prüfen Sie, ob sich auf der Seite ein anderes CAPTCHA-Formular befindet.
Ich hatte das gleiche Problem. Das Problem für mich war, dass die AjaxPro-Erweiterung ein verstecktes Anmeldeformular hatte, das auch CAPTCHA verwendete. Da beide Formulare den gleichen Blocknamen "captcha" hatten, wurde mein Block zweimal verwendet, und der Code wurde beim Laden der Seite für das zweite (versteckte) Formular aktualisiert, wodurch das in meinem Formular ungültig wurde. Also musste ich den Block für mein benutzerdefiniertes Formular umbenennen, zum Beispiel von "captcha" in "captcha.custom". Dann hat es super geklappt.
quelle
Ein anderer Grund als die bereits erwähnten kann darin bestehen, dass eine falsch referenzierte Ressource versucht, aus einer JS-Anfrage unter derselben Anforderungs-URL zu laden, was bei einigen Magento-Seiten die Regeneration des Captchas in der Sitzung bewirkt, ohne das Frontend zu aktualisieren angezeigtes Captcha-Bild, da die Ausgabe an diese Ajax-Anfrage geht.
Ich hatte beispielsweise einen JS-Leuchtkasten, der versuchte, ein Bild zu laden, das auf einen relativen Pfad verweist, was eine zusätzliche Anforderung an / customer / account / forgetpassword mit dem folgenden Anforderungspfad verursachte: /customer/account/forgotpassword/images/black.png Dies führt dazu, dass sich der Captcha-Code in der Sitzung ändert.
quelle