2017-02-10 13 views
0

У меня есть простая пользовательская форма в Joomla 3.6, которую я успешно добавил для reCaptcha. Однако я борюсь с подтверждением этого.Joomla 3 reCaptcha validation

После нескольких веб-поиска, я могу с помощью следующего кода:

$joomla_captcha = JFactory::getConfig()->get('captcha'); 
if ($joomla_captcha != '0') { 
    $jpost = JFactory::getApplication()->input->post; 
    $reCaptcha = $jpost->get("g-recaptcha-response"); 
    $dispatcher = JEventDispatcher::getInstance(); 
    $captcha_response = $dispatcher->trigger('onCheckAnswer', $reCaptcha); 
} 

if (! $captcha_response[0]) { 
    die("Invalid Captcha");  
} 

Однако форма проходит ли делается капча или нет.

Какие изменения мне нужно сделать, чтобы понять, прошел ли капчу или нет?

Форма действительно базовая, и я не хочу устанавливать еще один компонент только для этой проверки.

ответ

0

Хорошо, кажется, я ударил кирпичную стену, пытаясь найти способ «Joomla» сделать это, что вызывает встроенные методы API.

Поскольку я пользуюсь только Google reCaptcha, я нашел на Google's site, что поле «g-recaptcha-response» пуст, если вызов captcha не был завершен и не был пустым, если он был правильно завершен.

Так, Google ReCaptcha, мне нужно проверить поле «г-Recaptcha-ответ» и мой пример кода становится:

$joomla_captcha = JFactory::getConfig()->get('captcha'); 
if ($joomla_captcha != '0') { 
    $jpost = JFactory::getApplication()->input->post; 
    $reCaptcha = $jpost->get("g-recaptcha-response"); 
} 

if (isset($reCaptcha) && empty($reCaptcha) { 
    die("Invalid Captcha");  
} 

Это, очевидно, ограничивается Google ReCaptcha и было бы хорошо, чтобы запросить Joomla API Layer, чтобы обеспечить гибкость, но достаточно хорошо.

Редактировать

Следующие API вызовы Joomla возвращает «истина» или «ложь» в $ завершено, указывающее, прошел ли капча или не

$config = JFactory::getConfig()->get('captcha'); 
$captcha = JCaptcha::getInstance($config); 
$completed = $captcha->CheckAnswer(); 

if ($completed === false) { 
    die("Invalid Captcha"); 
} 

Предпочтительнее ранее подход, как будет способный работать с другими плагинами captcha, которые могут быть добавлены в Joomla.