web-dev-qa-db-fra.com

Comment utiliser google recaptcha dans ma page personnalisée?

1) Obtenir les clés de recaptcha auprès de http://www.google.com/recaptcha

2) Définissez ces clés sur le plug-in recaptcha et activez-le s'il ne l'est pas.

3) Mettez ci-dessous le code où vous voulez montrer recaptcha

code php:

JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$dispatcher->trigger('onInit','dynamic_recaptcha_1');

code html dans la balise de formulaire

<div id="dynamic_recaptcha_1"></div>

J'ai mis ce code dans ma page htmp:

$post = JFactory::getApplication()->input->post;
$dispatcher = JEventDispatcher::getInstance();
$res=$dispatcher->trigger('onCheckAnswer',$post['recaptcha_response_field']);
if(!$res[0]){
    die('Invalid Captcha');
}

J'ai placé le code ci-dessus, mais après avoir soumis le formulaire, je reçois une page vierge. Pouvez-vous expliquer pourquoi?

4
Coder

D'abord, lisez attentivement les fichiers dans lesquels SO réponse que vous avez cité vous indique de mettre le code.

En outre, le code que vous avez joint ne fonctionne plus dans Joomla 3.5. Cela est dû à une modification du plugin reCaptcha. Vous devez l'utiliser comme ceci:

JPluginHelper::importPlugin('captcha');
$dispatcher = JEventDispatcher::getInstance();
$dispatcher->trigger('onInit','my_captcha_div');

Et au lieu de créer un conteneur comme celui-ci:

<div id="my_captcha_div"></div>

en créer un comme celui ci-dessous:

<div id="my_captcha_div" 
    class="g-recaptcha" 
    data-sitekey="xxxxxxxxxxxxxx" 
    data-theme="xxxx" 
    data-size="xxxx"></div>

Vérifiez ici également pour plus d'informations.

4
ilias

Joomla 3.x Correct

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

et

if (isset($recaptcha[0]) and $joomla_captcha != "0") {
        echo $recaptcha[0];
}
0