올바른 코드를 입력해도 Magento 기본 보안 문자에 "잘못된 CAPTCHA"가 표시됩니다


10

내 magento 사이트에서 처음부터 빌드 한 사용자 정의 테마의 계정 작성 양식 ( "rwd"아님)에 대해 Captcha를 사용하도록 설정했지만 필드에 올바른 보안 문자 코드를 제공하여 고객을 등록하려고하면 "잘못된" 동일한 페이지로 새로 고침 및 리디렉션 한 후 보안 문자 "

클라이언트 나 서버에 경고 / 오류가 없습니다.

누구든지 나를 안내 할 수 있습니까?


1
같은 문제가 있습니다. 보안 문자 이미지에서 새로 고침 버튼을 클릭하고 새 값을 올바르게 입력하면 허용됩니다. 같은 행동을 경험 했습니까?
Moose

답변:


2

보안 문자 확인 프로세스를 디버그하여 해결할 수 있습니다.

따라서 아래 절차를 따르십시오.

Magento customer registration form's보안 문자는 이벤트를 사용하여 Mage_Captcha_Model_Observer기능 에 대해 클래스 에서 점검되었습니다 .checkUserCreate()controller_action_predispatch_customer_account_createpost

magento는 다음을 사용할 때 보안 문자 값을 확인합니다.

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

이것은 여기서 magento가 field of field의 값을 보내고 captcha[user_create] 필드가 Mage_Captcha_Model_Zend 함수에서 일치 한다는 것을 의미 합니다.isCorrent()

이 필드는 세션 값과 일치합니다.

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

이를 사용하여 문제가있는 위치를 추적 할 수 있습니다


iam도 같은 error.how를 확인합니다 @Amit Bera
User0434

1

문제는 잘못된 입력 필드 이름 (예 : name="captcha_user_create"대신 name="captcha[user_create]")을 참조 할 수 있습니다 . 또는 JS 보안 문자 초기화 new Captcha(...)가 두 번 실행됩니다.

template/captcha/zend.phtml사용자 정의 테마에 파일 이 있습니까?

다른 페이지에서 보안 문자를 사용합니까 (비밀번호, 로그인)? 다른 페이지에서 제대로 작동합니까?

단일 페이지에 두 개의 보안 문자를 사용합니까?

또한 Mage_Captcha_Model_Zend::isCorrect고객 세션에서 보안 문자 값을 지우므로 메소드를 두 번 호출하지 않아야합니다 . 그렇게하면 항상 "잘못된 CAPTCHA"메시지가 나타납니다.


이제 언급했듯이 단일 페이지에 두 개의 보안 문자가 있습니다. 팝업 로그인 아이콘이 있는데 등록 페이지에서 보안 문자가 생성되는 것을 볼 수 있습니다. 보안 문자가 활성화 된 유일한 곳은 고객 등록 페이지입니다.
Moose

1

소스를보고 페이지에 다른 보안 문자 양식이 있는지 확인하십시오.

나는이 같은 문제가 있었다. 나에게 문제는 AjaxPro 확장 프로그램에 숨겨진 로그인 양식이 있고 CAPTCHA도 사용하고 있다는 것입니다. 두 양식의 블록 이름이 "captcha"이므로 동일한 블록이 두 번 사용되었으며 페이지로드시 두 번째 (숨겨진) 양식의 코드가 새로 고쳐 져서 양식의 양식이 무효화되었습니다. 따라서 사용자 지정 양식의 블록 이름을 "captcha"에서 "captcha.custom"으로 바꿔야했습니다. 그런 다음 훌륭하게 작동했습니다.


이것이 내 문제의 근본임을 확인할 수 있습니다. 나도 AjaxPro 확장을 가지고 있었고 헤더에 로그인 팝업 상자를 추가했다. 내가 가리키면 두 번째 보안 문자가 표시됩니다. app / design / frontend / base / default / template / tm / ajaxpro / customer / login.phtml로 이동하여 주석 처리하여 문제를 해결했습니다. <? php echo $ this-> getChildHtml ( 'form.additional.info') ; ?>.
NotJay

0

이것에 대한 한 가지 이유는 이미 언급 한 것 이외의 동일한 요청 URL에서 JS 요청에서로드하려고 시도하는 잘못된 참조 자원이있을 수 있는데, 이로 인해 일부 마 젠토 페이지의 경우 프론트 엔드를 새로 고치지 않고 세션에서 보안 문자가 재생성됩니다. 출력은 해당 아약스 요청으로 이동하므로 표시된 보안 문자 이미지.

예를 들어 상대 경로를 참조하는 이미지를로드하려고하는 JS 라이트 박스가 있었으며 /customer/account/forgotpassword/images/black.png 요청 경로로 / customer / account / forgotpassword에 추가 요청이 발생했습니다. 이로 인해 보안 문자 코드가 세션에서 변경됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.