Как вывести сообщение о том, что "Вы не прошли проверку" в google recaptcha

#
Как вывести сообщение о том, что "Вы не прошли проверку" в google recaptcha
Рекапча работает, ну вот не понимаю как вывести сообщение если она не заполнена. Подскажите что нужно добавить в обработчик.

код в обработчике:
----------------------------------------------
<?php
    $oForm = Core_Entity::factory('Form', 1);

    $Form_Controller_Show = new Form_Controller_Show($oForm);
    
    $sSecretKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // Указывается секретный ключ reCAPTCHA

    if (!is_null(Core_Array::getPost($oForm->button_name)))
    {
        if (Core_Array::getPost('g-recaptcha-response'))
        {
            $sResponse = Core_Array::getPost('g-recaptcha-response');

            $sUrl = 'https://www.google.com/recaptcha/api/siteverify';

            $Core_Http = Core_Http::instance('curl')
            ->clear()
            ->method('POST')
            ->url($sUrl)
            ->data('secret',$sSecretKey)
            ->data('response',$sResponse)
            ->execute();

            $aAnswer = json_decode($Core_Http->getBody(), TRUE);            
            
            if ($aAnswer['success'])
            {
                $Form_Controller_Show
                    ->values($_POST + $_FILES)
                    // 0 - html, 1- plain text
                    ->mailType(0)
                    ->mailXsl(
                        Core_Entity::factory('Xsl')->getByName('ПисьмоКураторуФормыВФорматеHTML')
                    )
                    ->mailFromFieldName('email')
                    ->process();
            }
            else
            {
                Core_Log::instance()->clear()
                ->status(Core_Log::$ERROR)
                ->write('Google Recaptcha: ' . $aAnswer['error-codes'][0]);
            }    
        }            
    }

    $Form_Controller_Show
        ->xsl(
             Core_Entity::factory('Xsl')->getByName('ОтобразитьФормуОбратнаяСвязь')
        )
        ->addEntity(
            Core::factory('Core_Xml_Entity')
                 ->name('site_key')->value('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') // Указываете ключ reCAPTCHA
        )
        ->show();
?>
----------------------------------------------
#
Re: Как вывести сообщение о том, что "Вы не прошли проверку" в google recaptcha
После
Core_Log::instance()->clear()
                ->status(Core_Log::$ERROR)
                ->write('Google Recaptcha: ' . $aAnswer['error-codes'][0]);


добавьте

$Form_Controller_Show->addEntity(Core::factory('Core_Xml_Entity')
                    ->name('error_captcha')->value(1)
                );


далее в xsl-шаблоне выводите нужное сообщение при error_captcha  = 1
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Как вывести сообщение о том, что "Вы не прошли проверку" в google recaptcha
добавил сюда:
--------------------------------------------------------------------
<?php
    $oForm = Core_Entity::factory('Form', 1);

    $Form_Controller_Show = new Form_Controller_Show($oForm);
    
    $sSecretKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // Указывается секретный ключ reCAPTCHA

    if (!is_null(Core_Array::getPost($oForm->button_name)))
    {
        if (Core_Array::getPost('g-recaptcha-response'))
        {
            $sResponse = Core_Array::getPost('g-recaptcha-response');

            $sUrl = 'https://www.google.com/recaptcha/api/siteverify';

            $Core_Http = Core_Http::instance('curl')
            ->clear()
            ->method('POST')
            ->url($sUrl)
            ->data('secret',$sSecretKey)
            ->data('response',$sResponse)
            ->execute();

            $aAnswer = json_decode($Core_Http->getBody(), TRUE);            
            
            if ($aAnswer['success'])
            {
                $Form_Controller_Show
                    ->values($_POST + $_FILES)
                    // 0 - html, 1- plain text
                    ->mailType(0)
                    ->mailXsl(
                        Core_Entity::factory('Xsl')->getByName('ПисьмоКураторуФормыВФорматеHTML')
                    )
                    ->mailFromFieldName('email')
                    ->process();
            }
            else
            {
                Core_Log::instance()->clear()
                ->status(Core_Log::$ERROR)
                ->write('Google Recaptcha: ' . $aAnswer['error-codes'][0]);
            }    
        }            
    }

    $Form_Controller_Show->addEntity(Core::factory('Core_Xml_Entity')
                    ->name('error_captcha')->value(1)
      );

    $Form_Controller_Show
        ->xsl(
             Core_Entity::factory('Xsl')->getByName('ОтобразитьФормуОбратнаяСвязь')
        )
        ->addEntity(
            Core::factory('Core_Xml_Entity')
                 ->name('site_key')->value('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') // Указываете ключ reCAPTCHA
        )
        ->show();
?>
--------------------------------------------------------------------
и добавил в xsl шаблоне:
<xsl:if test="error_captcha = 1">
Вы не прошли проверку!
</xsl:if>

Но это сообщение показывается всегда, а нужно, чтобы показывалось, только в том случае, если не поставил галочку.
#
Re: Как вывести сообщение о том, что "Вы не прошли проверку" в google recaptcha
        {
                Core_Log::instance()->clear()
                ->status(Core_Log::$ERROR)
                ->write('Google Recaptcha: ' . $aAnswer['error-codes'][0]);

    $Form_Controller_Show->addEntity(Core::factory('Core_Xml_Entity')
                    ->name('error_captcha')->value(1)
      );
            }    


так должно быть
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Как вывести сообщение о том, что "Вы не прошли проверку" в google recaptcha
таким образом не показывается сообщение вообще
<?php
    $oForm = Core_Entity::factory('Form', 1);

    $Form_Controller_Show = new Form_Controller_Show($oForm);
    
    $sSecretKey = "ххххххххххххххххххххххххххххххххх"; // Указывается секретный ключ reCAPTCHA

    if (!is_null(Core_Array::getPost($oForm->button_name)))
    {
        if (Core_Array::getPost('g-recaptcha-response'))
        {
            $sResponse = Core_Array::getPost('g-recaptcha-response');

            $sUrl = 'https://www.google.com/recaptcha/api/siteverify';

            $Core_Http = Core_Http::instance('curl')
            ->clear()
            ->method('POST')
            ->url($sUrl)
            ->data('secret',$sSecretKey)
            ->data('response',$sResponse)
            ->execute();

            $aAnswer = json_decode($Core_Http->getBody(), TRUE);            
            
            if ($aAnswer['success'])
            {
                $Form_Controller_Show
                    ->values($_POST + $_FILES)
                    // 0 - html, 1- plain text
                    ->mailType(0)
                    ->mailXsl(
                        Core_Entity::factory('Xsl')->getByName('ПисьмоКураторуФормыВФорматеHTML')
                    )
                    ->mailFromFieldName('email')
                    ->process();
            }
            else
            {
                Core_Log::instance()->clear()
                ->status(Core_Log::$ERROR)
                ->write('Google Recaptcha: ' . $aAnswer['error-codes'][0]);

                $Form_Controller_Show->addEntity(Core::factory('Core_Xml_Entity')
                    ->name('error_captcha')->value(1)
                );

            }    
        }            
    }



    $Form_Controller_Show
        ->xsl(
             Core_Entity::factory('Xsl')->getByName('ОтобразитьФормуОбратнаяСвязь')
        )
        ->addEntity(
            Core::factory('Core_Xml_Entity')
                 ->name('site_key')->value('хххххххххххххххххххххххххххххх') // Указываете ключ reCAPTCHA
        )
        ->show();
?>
#
Re: Как вывести сообщение о том, что "Вы не прошли проверку" в google recaptcha
Deeg,
Алгоритм должен быть нечто таким:
if (Core_Array::getPost('g-recaptcha-response'))
{
    <!-- Валидация -->
    if ($oAnswer->success)
    {
        <!-- Если все хорошо -->
        $Form_Controller_Show->addEntity(Core::factory('Core_Xml_Entity')
            ->name('success')->value(1)
        );
    }
    else
    {
        <!-- Не верная капча или ошибка -->
        $Form_Controller_Show->addEntity(Core::factory('Core_Xml_Entity')
            ->name('error')->value('Неверная капча, просим подтвердить что Вы не робот!')
        );
    }
}
else
{
    <!-- Попытка отправить данные без капчи -->
    $Form_Controller_Show->addEntity(Core::factory('Core_Xml_Entity')
        ->name('error')->value('Неверная капча, просим подтвердить что Вы не робот!')
    );
}
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
#
Re: Как вывести сообщение о том, что "Вы не прошли проверку" в google recaptcha
Все спасибо за помощь, сделал таким образом, сейчас ошибку показывает, если не заполнил капчу.
--------------------------------------------------------
<?php
    $oForm = Core_Entity::factory('Form', 1);

    $Form_Controller_Show = new Form_Controller_Show($oForm);
    
    $sSecretKey = "ххххххххххххххххххххххххххххх"; // Указывается секретный ключ reCAPTCHA

    if (!is_null(Core_Array::getPost($oForm->button_name)))
    {
        if (Core_Array::getPost('g-recaptcha-response'))
        {
            $sResponse = Core_Array::getPost('g-recaptcha-response');

            $sUrl = 'https://www.google.com/recaptcha/api/siteverify';

            $Core_Http = Core_Http::instance('curl')
                ->clear()
                ->method('POST')
                ->url($sUrl)
                ->data('secret',$sSecretKey)
                ->data('response',$sResponse)
                ->execute();

            $aAnswer = json_decode($Core_Http->getBody(), TRUE);            
            
            if ($aAnswer['success'])
            {
                $Form_Controller_Show
                    ->values($_POST + $_FILES)
                    // 0 - html, 1- plain text
                    ->mailType(0)
                    ->mailXsl(
                        Core_Entity::factory('Xsl')->getByName('ПисьмоКураторуФормыВФорматеHTML')
                    )
                    ->mailFromFieldName('email')
                    ->process();
            }
            else
            {
                Core_Log::instance()->clear()
                    ->status(Core_Log::$ERROR)
                    ->write('Google Recaptcha: ' . $aAnswer['error-codes'][0]);

                $Form_Controller_Show->addEntity(
                    Core::factory('Core_Xml_Entity')
                        ->name('error')
                        ->value($aAnswer['error-codes'][0])
                );
            }
        }

        else
        {
            $Form_Controller_Show->addEntity(
                Core::factory('Core_Xml_Entity')
                    ->name('errorId')
                    ->value(0)
            );
        }            
    }

    $Form_Controller_Show
        ->xsl(
             Core_Entity::factory('Xsl')->getByName('ОтобразитьФорму')
        )
        ->addEntity(
            Core::factory('Core_Xml_Entity')
                 ->name('site_key')->value('хххххххххххххххххххххххххххххххххх') // Указываете ключ reCAPTCHA
        )
        ->show();
?>
--------------------------------------------------------
#
Re: Как вывести сообщение о том, что "Вы не прошли проверку" в google recaptcha
Deeg писал(а):
Все спасибо за помощь
Пожалуйста.
Только еще добавьте в:
if ($aAnswer['success'])
            {
                $Form_Controller_Show
                    ->values($_POST + $_FILES)
                    // 0 - html, 1- plain text
                    ->mailType(0)
                    ->mailXsl(
                        Core_Entity::factory('Xsl')->getByName('ПисьмоКураторуФормыВФорматеHTML')
                    )
                    ->mailFromFieldName('email')
                    ->process();
            }

Пункт:
$Form_Controller_Show->addEntity(Core::factory('Core_Xml_Entity')
            ->name('success')->value(1)
        );

Что бы показывала:
<xsl:when test="success/node() and success = 1">
                <div class="alert alert-success">Спасибо! Запрос получен, в ближайшее время Вам будет дан ответ.</div>
            </xsl:when>

Думаю так.
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
Авторизация