Magento Default Captcha zeigt "Falsches CAPTCHA" an, auch wenn der richtige Code eingegeben wurde


10

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?


1
Ich habe das gleiche Problem. Ich habe jedoch festgestellt, dass wenn Sie auf die Schaltfläche "Aktualisieren" im CAPTCHA-Bild klicken und den neuen Wert korrekt eingeben, dieser akzeptiert wird. Haben Sie das gleiche Verhalten erlebt?
Elch

Antworten:


2

Sie können den Captcha-Check-Prozess durch Debuggen lösen.

Befolgen Sie daher bitte den folgenden Vorgang.

Magento customer registration form'sCaptcha wurde in der Klasse Mage_Captcha_Model_Observerauf Funktion checkUserCreate()mit controller_action_predispatch_customer_account_createpostEreignis überprüft .

Dort prüft Magento den Captcha-Wert bei Verwendung von:

$captchaModel->isCorrect($this->_getCaptchaString(Mage::app()->getRequest(), $formId))

Das bedeutet hier, dass Magento den Wert des Feldes von sendet captcha[user_create] und das Feld Mage_Captcha_Model_Zend bei der Funktion übereinstimmtisCorrent()

Dieses Feld stimmt mit dem Sitzungswert überein.

Mage::getSingleton('customer/session')->getData($this->_getFormIdKey('word')

Wert

Auf diese Weise können Sie verfolgen, wo das Problem liegt


Ich bekomme auch den gleichen Fehler. Wie überprüfe ich das? @Amit Bera
User0434

1

Das Problem kann auf einen falschen Eingabefeldnamen verweisen (z. B. name="captcha_user_create"anstelle von name="captcha[user_create]"). Oder JS captcha init new Captcha(...)wird zweimal ausgelöst.

Gibt es eine Datei template/captcha/zend.phtmlin 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::isCorrectMethode 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".


Nachdem Sie es erwähnt haben, befinden sich auf der einzelnen Seite zwei Captchas. Wir haben ein Popup-Anmeldesymbol und ich sehe, dass dort auch auf der Registrierungsseite ein CAPTCHA generiert wird. Der einzige Ort, an dem CAPTCHA aktiviert ist, ist auf der Kundenregistrierungsseite.
Elch

1

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.


Ich kann bestätigen, dass dies die Wurzel meines Problems war. Ich hatte auch die AjaxPro-Erweiterung und sie fügte ein Login-Popover-Feld in der Kopfzeile hinzu. Als ich darüber schwebte, sah ich das zweite CAPTCHA. Ich habe es behoben, indem ich zu app / design / frontend / base / default / template / tm / ajaxpro / customer / login.phtml gegangen bin und dies auskommentiert habe: <? Php echo $ this-> getChildHtml ('form.additional.info') ;; ?>.
NotJay

0

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.