Domyślna Captcha Magento pokazuje „Niepoprawny CAPTCHA”, nawet jeśli wprowadzono prawidłowy kod


10

W mojej witrynie magento włączyłem niestandardową kompozycję Captcha for Create Account, którą stworzyłem od podstaw (nie „rwd”), ale kiedy próbuję zarejestrować klienta, podając w polu prawidłowy kod captcha, nawet wtedy wyświetla się „Niepoprawny Captcha ”po odświeżeniu i przekierowaniu do tej samej strony.

Brak ostrzeżeń / błędów w kliencie lub serwerze.

Czy ktoś może mnie poprowadzić?


1
Mam ten sam problem. Zauważyłem jednak, że jeśli klikniesz przycisk odświeżania na obrazie CAPTCHA i wpiszesz poprawnie nową wartość, akceptuje ją. Czy doświadczyłeś tego samego zachowania?
Łoś

Odpowiedzi:


2

Możesz rozwiązać ten problem, sprawdzając proces sprawdzania captcha.

Postępuj zgodnie z poniższym procesem.

Magento customer registration form'scaptcha zostało sprawdzone w klasie pod kątem Mage_Captcha_Model_Observerfunkcji checkUserCreate()za pomocą controller_action_predispatch_customer_account_createpostzdarzenia.

Magento sprawdza wartość captcha przy użyciu:

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

Oznacza to, że tutaj magento wysyła wartość pola, captcha[user_create] a pole jest dopasowane Mage_Captcha_Model_Zend w funkcjiisCorrent()

To pole jest zgodne z wartością sesji.

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

wartość

Za pomocą tego można śledzić, gdzie problem


Iam również otrzymuję ten sam błąd. jak to sprawdzić @Amit Bera
User0434

1

Problem może dotyczyć niepoprawnej nazwy pola wejściowego (na przykład name="captcha_user_create"zamiast name="captcha[user_create]"). Lub JS captcha init new Captcha(...)jest uruchamiany dwukrotnie.

Czy template/captcha/zend.phtmlTwój motyw niestandardowy zawiera plik ?

Czy używasz captcha na innych stronach (zapomniałeś hasła, logujesz się)? Czy działa poprawnie na innych stronach?

Czy używasz dwóch captchas na jednej stronie?

Upewnij się również, że nie wywołujesz Mage_Captcha_Model_Zend::isCorrectmetody dwukrotnie, ponieważ usuwa ona wartość captcha z sesji klienta. Jeśli to zrobisz, zawsze pojawi się komunikat „Niepoprawna CAPTCHA”.


Teraz, gdy o tym wspominasz, na jednej stronie są dwa captchas. Mamy wyskakującą ikonę logowania i widzę, że CAPTCHA jest tam również generowany na stronie rejestracji. Jedyne miejsce, w którym włączona jest funkcja CAPTCHA, to strona rejestracji klienta.
Łoś

1

Wyświetl swoje źródło i sprawdź, czy na stronie znajduje się inny formularz CAPTCHA.

Miałem ten sam problem. Problemem było dla mnie to, że rozszerzenie AjaxPro miało ukryty formularz logowania, który również korzystał z CAPTCHA. Ponieważ obie formularze miały tę samą nazwę bloku „captcha”, mój blok był używany dwukrotnie, a kod był odświeżany dla drugiego (ukrytego) formularza przy ładowaniu strony, co unieważnia ten w moim formularzu. Musiałem więc zmienić nazwę bloku dla mojej niestandardowej formy, na przykład z „captcha” na „captcha.custom”. Potem działało świetnie.


Mogę potwierdzić, że to był początek mojego problemu. Ja także miałem rozszerzenie AjaxPro i dodałem okienko popover w nagłówku. Kiedy się zawisłem, zobaczyłem drugą CAPTCHA. Naprawiłem to, przechodząc do app / design / frontend / base / default / template / tm / ajaxpro / customer / login.phtml i komentując to: <? Php echo $ this-> getChildHtml ('form.additional.info') ; ?>.
NotJay

0

Jednym z powodów, oprócz tych już wspomnianych, może być niepoprawnie przywoływany zasób, który próbuje załadować z żądania JS pod tym samym adresem URL żądania, co dla kilku stron Magento powoduje regenerację captcha w sesji, bez odświeżania interfejsu użytkownika pokazano obraz captcha, ponieważ dane wyjściowe trafią do tego żądania ajax.

Na przykład miałem lightbox JS, który próbował załadować obraz odnoszący się do ścieżki względnej, co powodowało dodatkowe żądanie do / customer / account / forgotpassword z następującą ścieżką żądania: /customer/account/forgotpassword/images/black.png , co powoduje zmianę kodu captcha w sesji.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.