24

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

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

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');
}

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

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