Jump to content

[2.*] reCAPTCHA API 2.0 (капча от гугл)


Recommended Posts

http://s7.hostingkartinok.com/uploads/images/2015/08/4e8ceb61320d1cf55f973ff0cd65fe59.png

 

Новая капча (reCAPTCHA 2.0) взамен старой капчи от Simpla CMS

 

1 Заходим на сайт https://www.google.com/recaptcha/admin
Получаем ключи, которые потом будет записывать в админке в разделе "Настройки"

 

 

1.1 Загружаем файлы в папку captcha

2. Открываем файл \simpla\SettingsAdmin.php

добавляем: 

/* ReCaptcha */
$this->settings->site_code = $this->request->post('site_code');            
$this->settings->secret_code = $this->request->post('secret_code');    

// Простые звонки

3. открываем файл  simpla\design\html\settings.tpl

добавляем:

<h2>Управление <a href="https://www.google.com/recaptcha/admin">ключами ReCaptcha API</a></h2>            
<ul>                    
    <li><label class=property>Ключ</label><input name="site_code" class="simpla_inp" type="text" value="{$settings->site_code|escape}" /></li>
    <li><label class=property>Секретный ключ</label><input name="secret_code" class="simpla_inp" type="text" value="{$settings->secret_code|escape}" /></li>            
</ul>
<h2>Интеграция с <a href="http://prostiezvonki.ru">простыми звонками</a></h2> 

4. Открываем файл \view\View.php

вставляем:

require_once('api/Simpla.php');
require_once('captcha/autoload.php'); 

5. Открываем файл \view\CartView.php BlogView.php FeedbackView.php ProductView.php RegisterView.php

добавляем:

class *НАЗВАНИЕ МОДУЛЯ* extends View
{
$response = null;
$reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code); 

ищем: 

$captcha_code =  $this->request->post('captcha_code', 'string'); 

заменяем на:

$captcha_code =  $this->request->post('g-recaptcha-response');
$response = $reCaptcha->verify($captcha_code, $order->ip);

*ищем:

elseif($_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))

*заменяем на: 

elseif($response->getErrorCodes())

------ ИНФОРМАЦИЯ -----------------------------------------------------------------------------------------------------------------------

* в некоторых случаях будет

elseif(empty($_SESSION['captcha_code']) || $_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))

​заменяем на:

elseif($response->getErrorCodes())  

или 

if ($_SESSION['captcha_code'] != $captcha_code || empty($captcha_code)) 

​заменяем на:

if($response->getErrorCodes())

------ ИНФОРМАЦИЯ -----------------------------------------------------------------------------------------------------------------------

 

удаляем (если есть):

unset($_SESSION['captcha_code']); 

 

 

6. Открываем файл design\[ваш шаблон]\html\index.tpl

добавляем:

<script src='https://www.google.com/recaptcha/api.js'></script>		
</head>

7. Открываем файлы design\[ваш шаблон]\html\cart feedback post product register.tpl
ищем:

<div class="captcha"><img src="captcha/image.php?{math equation='rand(10,10000)'}" alt='captcha'/></div> 
<input class="input_captcha" id="comment_captcha" type="text" name="captcha_code" value="" data-format="\d\d\d\d" data-notice="Введите капчу"/>

заменяем на:

<div class="g-recaptcha" data-sitekey="{$settings->site_code|escape}"></div>

 

 

http://images.vfl.ru/ii/1463592914/35dbd686/12710030.pnghttp://images.vfl.ru/ii/1463592915/b95e440f/12710031.png

Edited by ps-simpla
Link to post
Share on other sites
  • 1 month later...
  • Replies 82
  • Created
  • Last Reply

Top Posters In This Topic

  • 3 months later...
  • 4 weeks later...

А что делать если у меня нет файла settings.tpl создать его самому ? Или что должно быть в файле по умолчанию ?

какая версия симплы? он там должен быть. может вы папки перепутали?

simpla/design/html/settings.tpl

Link to post
Share on other sites

Сдесь не понятно

 

if ($_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))

 

 

у меня же код такой, без if, как сдесь заменить правильно ?

elseif(empty($_SESSION['captcha_code']) || $_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))

А в разрыв кода это удалять старый кусок кода заменив на новый, или добавляьть ниже ?

Edited by Axotn1k
Link to post
Share on other sites
  • 2 months later...
  • 2 weeks later...

 

 

Новая капча (reCAPTCHA 2.0) взамен старой капчи от Simpla CMS

 

1 Заходим на сайт https://www.google.com/recaptcha/admin

Получаем ключи, которые потом будет записывать в админке в разделе "Настройки"

 

 

1.1 Загружаем файлы в папку captcha

2. Открываем файл \simpla\SettingsAdmin.php

добавляем: 

/* ReCaptcha */
$this->settings->site_code = $this->request->post('site_code');            
$this->settings->secret_code = $this->request->post('secret_code');    

// Простые звонки

3. открываем файл  simpla\design\html\settings.tpl

добавляем:

<h2>Управление <a href="https://www.google.com/recaptcha/admin">ключами ReCaptcha API</a></h2>            
<ul>                    
    <li><label class=property>Ключ</label><input name="site_code" class="simpla_inp" type="text" value="{$settings->site_code|escape}" /></li>
    <li><label class=property>Секретный ключ</label><input name="secret_code" class="simpla_inp" type="text" value="{$settings->secret_code|escape}" /></li>            
</ul>
<h2>Интеграция с <a href="http://prostiezvonki.ru">простыми звонками</a></h2> 

4. Открываем файл \view\View.php

вставляем:

require_once('api/Simpla.php');
require_once('captcha/autoload.php'); 

5. Открываем файл \view\CartView.php BlogView.php FeedbackView.php ProductView.php RegisterView.php

добавляем:

class *НАЗВАНИЕ МОДУЛЯ* extends View
{
$response = null;
$reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code); 

ищем: 

$captcha_code =  $this->request->post('captcha_code', 'string'); 

заменяем на:

$captcha_code =  $this->request->post('g-recaptcha-response');
$response = $reCaptcha->verify($captcha_code, $order->ip);

*ищем:

elseif($_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))

*заменяем на: 

elseif($response->getErrorCodes())

------ ИНФОРМАЦИЯ -----------------------------------------------------------------------------------------------------------------------

* в некоторых случаях будет

elseif(empty($_SESSION['captcha_code']) || $_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))

​заменяем на:

elseif($response->getErrorCodes())  

или 

if ($_SESSION['captcha_code'] != $captcha_code || empty($captcha_code)) 

​заменяем на:

if($response->getErrorCodes())

------ ИНФОРМАЦИЯ -----------------------------------------------------------------------------------------------------------------------

 

удаляем (если есть):

unset($_SESSION['captcha_code']); 

 

 

6. Открываем файл design\[ваш шаблон]\html\index.tpl

добавляем:

<script src='https://www.google.com/recaptcha/api.js'></script>		
</head>

7. Открываем файлы design\[ваш шаблон]\html\cart feedback post product register.tpl

ищем:

<div class="captcha"><img src="captcha/image.php?{math equation='rand(10,10000)'}" alt='captcha'/></div> 
<input class="input_captcha" id="comment_captcha" type="text" name="captcha_code" value="" data-format="\d\d\d\d" data-notice="Введите капчу"/>

заменяем на:

<div class="g-recaptcha" data-sitekey="{$settings->site_code|escape}"></div>

 

 

 

Здравствуйте, проблема с пунктом 5.

 

class *НАЗВАНИЕ МОДУЛЯ* extends View
{
$response = null;
$reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code); 

Если я правильно понял если к примеру это файл ProductView.php

 

то выходит так:

 

 

class ProductView extends View
{
	$response = null;
	$reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code);
	
	function fetch()
	{

 

Но в результате ошибка на сайте:

 

(Parse error: syntax error, unexpected '$response' (T_VARIABLE), expecting function (T_FUNCTION) in /home/goldnm/.../www/view/ProductView.php on line 9)

 

что то пошло не так, не подскажите что ? 

Link to post
Share on other sites
  • 3 weeks later...

 

Здравствуйте, проблема с пунктом 5.

 

class *НАЗВАНИЕ МОДУЛЯ* extends View
{
$response = null;
$reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code); 

Если я правильно понял если к примеру это файл ProductView.php

 

то выходит так:

 

 

class ProductView extends View
{
	$response = null;
	$reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code);
	
	function fetch()
	{

 

Но в результате ошибка на сайте:

 

(Parse error: syntax error, unexpected '$response' (T_VARIABLE), expecting function (T_FUNCTION) in /home/goldnm/.../www/view/ProductView.php on line 9)

 

что то пошло не так, не подскажите что ? 

 

Присоединяюсь к вопросу, точно такая же ошибка вылезает

Link to post
Share on other sites

Присоединяюсь к вопросу, точно такая же ошибка вылезает

 

$captcha_code =  $this->request->post('g-recaptcha-response');
$response = $reCaptcha->verify($captcha_code, $order->ip);

 

$order->ip это пример для CartView.php  

Link to post
Share on other sites
  • 2 weeks later...

Лично у меня вот так заработало:
ProductView и подобные файлы

------------------------------------
class ProductView extends View
{
    function fetch()
    {   
        $response = null;
$reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code);
        $product_url = $this->request->get('product_url', 'string');
--------------------------------------------------
в случае с продукт вместо:
            $captcha_code =  $this->request->post('g-recaptcha-response');
$response = $reCaptcha->verify($captcha_code, $order->ip);
ЭТО:
$comment->ip        = $_SERVER['REMOTE_ADDR'];
            $captcha_code =  $this->request->post('g-recaptcha-response');
$response = $reCaptcha->verify($captcha_code, $comment->ip );
------------------------
и не забываем
if($response->getErrorCodes())
 

Link to post
Share on other sites

После выполнения всех действий в корзину перестало заходить. "веб сайт не может обработать запрос"

 

где-то ошибка, посмотрите логи, и включите отображение ошибок

Link to post
Share on other sites
  • 2 months later...
  • 2 weeks later...
  • 3 months later...

Так и не нашол ответа по 5-тому пункту.

 

 

5. Открываем файл \view\CartView.php BlogView.php FeedbackView.php ProductView.php RegisterView.php

добавляем:

class *НАЗВАНИЕ МОДУЛЯ* extends View
{
$response = null;
$reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code); 

 

В примере с \view\CartView.php

получаю ошибку:

 

Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /var/www/.../view/CartView.php on line 19

Код вставил сюда:

 

 

 class CartView extends View
{
    $response = null;
    $reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code); 
 
   public function __construct()
  {
    parent::__construct();

 

Что не так чего он сыпется ? 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...