2017-02-10 13 views
0

私はreCaptchaを正常に追加したというJoomla 3.6の簡単なカスタムフォームを持っています。しかし、私はこれを検証するのに苦労しています。Joomla 3 reCaptchaの有効化

いくつかのウェブ検索後、私は次のコードでできます。

$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

さて、私はビルドされたAPIメソッドを呼び出すためにこれを行うための "Joomla"の方法を見つけようとして、レンガの壁に当たったようです。

私はGoogle's siteに、captchaチャレンジが完了していない場合は「g-recaptcha-response」フィールドが空であり、正しく完了した場合は空ではないことがわかりました。

ので、GoogleのreCAPTCHAのために、私は「G-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レイヤーを使用する代わりに、柔軟性はあるものの、十分に優れています。

編集

になるように、次のJoomlaのAPI呼び出しは、以前のアプローチすることが好ましい

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

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

キャプチャが経過しているかどうかを示すかを完了$に「true」または「false」を返します。 Joomlaに追加されるかもしれない他のcaptchaプラグインで動作することができます。

関連する問題