1) http://www.google.com/recaptcha からreaptchaキーを取得します
2)これらのキーをreaptchaプラグインに設定し、そうでない場合はアクティブ化します。
3)recaptchaを表示する場所にコードを配置します
phpコード:
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$dispatcher->trigger('onInit','dynamic_recaptcha_1');
フォームタグ内のHTMLコード
<div id="dynamic_recaptcha_1"></div>
私はこのコードを私のhtmpページに入れました:
$post = JFactory::getApplication()->input->post;
$dispatcher = JEventDispatcher::getInstance();
$res=$dispatcher->trigger('onCheckAnswer',$post['recaptcha_response_field']);
if(!$res[0]){
die('Invalid Captcha');
}
上記のコードを配置しましたが、フォームを送信した後、空白のページが表示されます。理由を説明できますか?
最初に、引用した SO answer がどのファイルにコードを置くように指示しているのかを注意深く読んでください。
また、添付したコードはJoomla 3.5では動作しなくなりました。これは、reCaptchaプラグインの変更によるものです。次のように使用する必要があります。
JPluginHelper::importPlugin('captcha');
$dispatcher = JEventDispatcher::getInstance();
$dispatcher->trigger('onInit','my_captcha_div');
そして、このようなコンテナを作成する代わりに:
<div id="my_captcha_div"></div>
以下のようなものを作成します。
<div id="my_captcha_div"
class="g-recaptcha"
data-sitekey="xxxxxxxxxxxxxx"
data-theme="xxxx"
data-size="xxxx"></div>
詳細については、ここも確認してください。
Joomla 3.x正解
$joomla_captcha = JFactory::getConfig()->get('captcha');
if ( $joomla_captcha != '0') {
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
// This will put the code to load reCAPTCHA's JavaScript file into your <head>
$dispatcher->trigger('onInit', 'dynamic_recaptcha_1');
// This will return the array of HTML code.
$recaptcha = $dispatcher->trigger('onDisplay', array(null, 'dynamic_recaptcha_1', 'class="required"'));
}
そして
if (isset($recaptcha[0]) and $joomla_captcha != "0") {
echo $recaptcha[0];
}