0

我已经激活了我的 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 以便即使我离线也能显示至少验证码。

4

1 回答 1

0

现在它工作正常。问题出在<input type="hidden" name="recaptcha_response_field">. 我不知道我为什么使用它。我删除了该字段的行,现在它工作正常。

但我还不相信recaptcha 集成,因为我无法控制它。如果有人能给我一个更好的想法来在组件中实现验证码,我将不胜感激。请注意,我没有使用 jform。

于 2013-02-01T01:44:36.520 回答