내 magento 사이트에서 처음부터 빌드 한 사용자 정의 테마의 계정 작성 양식 ( "rwd"아님)에 대해 Captcha를 사용하도록 설정했지만 필드에 올바른 보안 문자 코드를 제공하여 고객을 등록하려고하면 "잘못된" 동일한 페이지로 새로 고침 및 리디렉션 한 후 보안 문자 "
클라이언트 나 서버에 경고 / 오류가 없습니다.
누구든지 나를 안내 할 수 있습니까?
내 magento 사이트에서 처음부터 빌드 한 사용자 정의 테마의 계정 작성 양식 ( "rwd"아님)에 대해 Captcha를 사용하도록 설정했지만 필드에 올바른 보안 문자 코드를 제공하여 고객을 등록하려고하면 "잘못된" 동일한 페이지로 새로 고침 및 리디렉션 한 후 보안 문자 "
클라이언트 나 서버에 경고 / 오류가 없습니다.
누구든지 나를 안내 할 수 있습니까?
답변:
보안 문자 확인 프로세스를 디버그하여 해결할 수 있습니다.
따라서 아래 절차를 따르십시오.
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')
값
이를 사용하여 문제가있는 위치를 추적 할 수 있습니다
문제는 잘못된 입력 필드 이름 (예 : name="captcha_user_create"
대신 name="captcha[user_create]"
)을 참조 할 수 있습니다 . 또는 JS 보안 문자 초기화 new Captcha(...)
가 두 번 실행됩니다.
template/captcha/zend.phtml
사용자 정의 테마에 파일 이 있습니까?
다른 페이지에서 보안 문자를 사용합니까 (비밀번호, 로그인)? 다른 페이지에서 제대로 작동합니까?
단일 페이지에 두 개의 보안 문자를 사용합니까?
또한 Mage_Captcha_Model_Zend::isCorrect
고객 세션에서 보안 문자 값을 지우므로 메소드를 두 번 호출하지 않아야합니다 . 그렇게하면 항상 "잘못된 CAPTCHA"메시지가 나타납니다.
소스를보고 페이지에 다른 보안 문자 양식이 있는지 확인하십시오.
나는이 같은 문제가 있었다. 나에게 문제는 AjaxPro 확장 프로그램에 숨겨진 로그인 양식이 있고 CAPTCHA도 사용하고 있다는 것입니다. 두 양식의 블록 이름이 "captcha"이므로 동일한 블록이 두 번 사용되었으며 페이지로드시 두 번째 (숨겨진) 양식의 코드가 새로 고쳐 져서 양식의 양식이 무효화되었습니다. 따라서 사용자 지정 양식의 블록 이름을 "captcha"에서 "captcha.custom"으로 바꿔야했습니다. 그런 다음 훌륭하게 작동했습니다.
이것에 대한 한 가지 이유는 이미 언급 한 것 이외의 동일한 요청 URL에서 JS 요청에서로드하려고 시도하는 잘못된 참조 자원이있을 수 있는데, 이로 인해 일부 마 젠토 페이지의 경우 프론트 엔드를 새로 고치지 않고 세션에서 보안 문자가 재생성됩니다. 출력은 해당 아약스 요청으로 이동하므로 표시된 보안 문자 이미지.
예를 들어 상대 경로를 참조하는 이미지를로드하려고하는 JS 라이트 박스가 있었으며 /customer/account/forgotpassword/images/black.png 요청 경로로 / customer / account / forgotpassword에 추가 요청이 발생했습니다. 이로 인해 보안 문자 코드가 세션에서 변경됩니다.