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ć?
Odpowiedzi:
Możesz rozwiązać ten problem, sprawdzając proces sprawdzania captcha.
Postępuj zgodnie z poniższym procesem.
Magento
customer registration form's
captcha zostało sprawdzone w klasie pod kątemMage_Captcha_Model_Observer
funkcjicheckUserCreate()
za pomocącontroller_action_predispatch_customer_account_createpost
zdarzenia.Magento sprawdza wartość captcha przy użyciu:
Oznacza to, że tutaj magento wysyła wartość pola,
captcha[user_create]
a pole jest dopasowaneMage_Captcha_Model_Zend
w funkcjiisCorrent()
To pole jest zgodne z wartością sesji.
wartość
Za pomocą tego można śledzić, gdzie problem
źródło
Problem może dotyczyć niepoprawnej nazwy pola wejściowego (na przykład
name="captcha_user_create"
zamiastname="captcha[user_create]"
). Lub JS captcha initnew Captcha(...)
jest uruchamiany dwukrotnie.Czy
template/captcha/zend.phtml
Twó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::isCorrect
metody dwukrotnie, ponieważ usuwa ona wartość captcha z sesji klienta. Jeśli to zrobisz, zawsze pojawi się komunikat „Niepoprawna CAPTCHA”.źródło
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.
źródło
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.
źródło