24

我为我的联系表格创建了一个自定义模块。现在我想在这个模块中使用 Joomla recaptcha 插件。

知道如何完成这项工作吗?

4

3 回答 3

46

为了使用 joomla 默认的 recaptcha 插件,请按照以下步骤操作-

1) 从http://www.google.com/recaptcha获取 recaptcha 密钥

2)将这些键设置为recaptcha插件,如果不是则激活它。

3)把下面的代码你想显示recaptcha

//php code
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$dispatcher->trigger('onInit','dynamic_recaptcha_1');

//html code inside form tag
<div id="dynamic_recaptcha_1"></div>

4)将此代码放在您验证/处理表单的位置

$post = JRequest::get('post');      
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$res = $dispatcher->trigger('onCheckAnswer',$post['recaptcha_response_field']);
if(!$res[0]){
    die('Invalid Captcha');
}

//对于 Joomla 3.x

$post = JFactory::getApplication()->input->post;
$dispatcher = JEventDispatcher::getInstance();
于 2012-10-12T14:01:36.850 回答
2

跟进 Irfan 的代码,另外我必须执行以下操作才能显示验证码:

将以下内容添加到模板代码中。

JHtml::_('behavior.keepalive');

显然它包括 mootools 库。

似乎添加了一个事件 domready,但该事件仅在使用 mootools 库时触发。因此,只需检查您的 html 源代码,看看是否正在使用 mootools。我可能完全错了,但希望我的解决方案对某人有所帮助。

于 2013-08-08T17:19:54.087 回答
0

来自:http: //jw-extension.net/joomla-how-to/138-an-easy-way-insert-captcha-in-any-module-or-component-of-joomla.html

  1. 下载它

  2. 登录http://www.google.com/recaptcha获取 reCAPTCHA 公钥和 reCAPTCHA 私钥

  3. 安装、启用和输入公钥和私钥

  4. 在 HTMLmodule 插入{captcha}需要显示验证码的地方

  5. 一般请插入

    global $mainframe;
    $mainframe->triggerEvent('onCaptchaDisplay');
    

显示验证码。

  1. 如果启用了带有 reCAPTCHA 选项的 Auto-verify,插件将检查 captcha 验证数据是否存在,然后自动连接到 reCAPTCHA 并要求确认。这种方法在每次页面加载时都需要更多的系统资源,但如果您有许多页面需要验证码验证,这种方法非常有用。如果您不想在全局范围内启用验证码验证,但只针对几个页面,那么您可能需要禁用带有 reCAPTCHA 选项的自动验证。要验证用户响应,请将以下 PHP 代码插入到各个 Joomla! 的控制器文件中!需要验证码验证的扩展:

    global $mainframe;
    $mainframe->triggerEvent('onCaptchaConfirm');
    
于 2012-10-11T16:05:28.183 回答