web-dev-qa-db-ja.com

カスタムページでGoogle Recaptchaを使用するにはどうすればよいですか?

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

上記のコードを配置しましたが、フォームを送信した後、空白のページが表示されます。理由を説明できますか?

4
Coder

最初に、引用した 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>

詳細については、ここも確認してください。

4
ilias

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];
}