web-dev-qa-db-ja.com

カスタムモジュールでJoomla recaptchaプラグインを使用するにはどうすればよいですか?

お問い合わせフォーム用のカスタムモジュールを作成しました。今、私はこのモジュールでJoomla recaptchaプラグインを使用したいと思います。

これを行う方法はありますか?

24
Toretto

Joomlaのデフォルトのrecaptchaプラグインを使用するには、次の手順に従います。

1) http://www.google.com/recaptcha からreaptchaキーを取得します

2)これらのキーをreaptchaプラグインに設定し、そうでない場合はアクティブ化します。

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();
46
Irfan

Irfanのコードをフォローアップした上で、CAPTCHAが表示されるようにするには、さらに次のことを行う必要がありました。

以下をテンプレートコードに追加します。

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

どうやらmootoolsライブラリが含まれています。

イベントdomreadyが追加されたようですが、イベントはmootoolsライブラリが使用されている場合にのみ発生します。したがって、htmlソースをチェックして、mootoolsが使用されているかどうかを確認してください。私は完全に間違っているかもしれませんが、私の解決策が誰かを助けることを願っています。

2
w_hoami

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オプションによる自動検証が有効になっている場合、プラグインはキャプチャ検証データが存在するかどうかを確認し、自動的にreCAPTCHAに接続して確認を求めます。この方法では、ページを読み込むたびに少し多くのシステムリソースが必要になりますが、キャプチャの確認が必要なページが多数ある場合に非常に役立ちます。 CAPTCHA検証をグローバルに有効にしたくないが、ほんの数ページの場合は、reCAPTCHAオプションを使用した自動検証を無効にすることができます。ユーザーの応答を確認するには、キャプチャ検証が必要な個々のJoomla!拡張機能のコントローラーファイルに次のPHPコードを挿入します。

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