【问题标题】:How to use Joomla recaptcha plugin with my custom module?如何在我的自定义模块中使用 Joomla recaptcha 插件?
【发布时间】:2012-10-02 03:28:04
【问题描述】:

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

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

【问题讨论】:

    标签: joomla recaptcha joomla2.5


    【解决方案1】:

    要使用 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();
    

    【讨论】:

    • 我不明白将代码放在第 4 步中的哪个位置。如果我使用的是 formmail.php,那是放置它的地方吗?我很困惑,因为 Google 的说明说要将其放入他们提供的名为 verify.php 的文件中。
    • 将此代码放在模型或控制器中。这取决于您使用表单的原因。如果您不保存数据而是通过电子邮件发送表单数据,因此在发送此数据之前验证代码是否正确。基本上这将检查是否输入的代码是正确的。
    • 以上代码在 Joomla 3.5 中停止工作,因为 ReCaptcha 插件代码发生了变化。在此处查看更多详细信息:joomla.stackexchange.com/questions/16078/…
    • @Irfan 我可以请你看看这个:joomla.stackexchange.com/q/23614/12352 吗?
    【解决方案2】:

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

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

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

    显然它包含 mootools 库。

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

    【讨论】:

      【解决方案3】:

      从: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. 在 HTML 模块中插入 {captcha} 您需要显示验证码的地方

      5. 一般请插入

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

      显示验证码。

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

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 2015-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多