即使输入了正确的密码,Magento默认验证码也会显示“不正确的验证码”


10

在我的magento网站中,我启用了从头开始构建的自定义主题的“创建帐户”验证码形式的自定义主题(不是“ rwd”),但是当我尝试在该字段中提供正确的验证码代码来注册客户时,即使显示“错误验证码”,然后刷新并重定向到同一页面。

客户端或服务器中没有警告/错误。

谁能指导我?


1
我有同样的问题。我注意到,如果您单击CAPTCHA图像上的刷新按钮并正确输入新值,它将接受它。您是否经历过相同的行为?
驼鹿

Answers:


2

您可以通过调试验证码检查过程来解决。

因此,请遵循以下过程。

Magento验证customer registration form's码已在类Mage_Captcha_Model_ObservercheckUserCreate()使用controller_action_predispatch_customer_account_createpost事件进行功能 检查。

magento在使用时检查验证码值:

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

这意味着这里magento发送的字段的值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验证码init new Captcha(...)被触发两次。

template/captcha/zend.phtml您的自定义主题中是否有文件?

您是否在其他页面上使用了验证码(忘记密码,登录)?在其他页面上可以正常使用吗?

您是否在单个页面上使用两个验证码?

另外,请确保您不会Mage_Captcha_Model_Zend::isCorrect两次调用method,因为它会从客户会话中清除验证码值。如果这样做,您将始终收到该“不正确的验证码”消息。


既然您已提及,则在单个页面上有两个验证码。我们有一个弹出的登录图标,当我在注册页面上时,也看到正在生成一个验证码。启用CAPTCHA的唯一位置是在客户注册页面上。
驼鹿2015年

1

查看您的来源,查看页面上是否还有另一个验证码表格。

我有同样的问题。对我来说,问题在于AjaxPro扩展具有隐藏的登录表单,该表单也正在使用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请求加载错误引用的资源,这对于少数Magento页面导致会话中验证码的重新生成,而无需刷新前端显示的验证码图片,因为输出将转到该ajax请求。

例如,我有一个JS灯箱试图加载引用相对路径的图像,这导致使用以下请求路径对/ customer / account / forgotpassword的附加请求:/customer/account/forgotpassword/images/black.png ,这会导致验证码在会话中更改。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.