我已经为我的recaptcha激活了密钥,然后使用以下代码实现它:
形式:
<?php
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$dispatcher->trigger('onInit','dynamic_recaptcha_1');
?>
<form ............>
.............
<div id="dynamic_recaptcha_1"></div>
<input type="hidden" name="recaptcha_response_field">
</form>
然后在控制器中我验证验证码如下:
$capatcha = JRequest::getVar('recaptcha_response_field', 'POST');
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$res = $dispatcher->trigger('onCheckAnswer',$capatcha);
if(!$res[0]){
$errors['captcha'] = "Invalid Captcha";
}
问题是,即使我提供正确的验证码值,我也会收到无效验证码。
另外,我必须说我不相信在我的组件中集成了recaptcha的方法,因为我无法在这里修改/自定义任何内容<div id="dynamic_recaptcha_1"></div>
。所以,如果有人能让我更好地将recaptcha集成到joomla组件中,我会很高兴。我发现如果我没有连接到互联网,我的验证码集成方法就不起作用了。所以,我想使用libcaptcha.php,以便即使我离线也会显示至少验证码。
答案 0 :(得分:0)
现在它的工作正常。问题在于<input type="hidden" name="recaptcha_response_field">
。我不知道为什么我用过它。我删除了该字段的行,现在它正常工作。
但我不相信recaptcha整合,因为我无法控制它。如果有人能给我一个更好的想法来实现组件中的验证码,我将不胜感激。请注意,我没有使用jform。