Перейти к содержанию
Официальный форум поддержки Simpla

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


Рекомендуемые сообщения

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

Изменено пользователем ps-simpla
Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...
  • Ответов 93
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

  • 3 месяца спустя...
  • 4 недели спустя...

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

Ссылка на сообщение
Поделиться на другие сайты

Скачать дистрибутив с http://simplacms.ru/, разархивировать и там взять нужный файл.

А вообще очень маловероятно, что его нет. Проверьте еще раз и обратите внимание на путь к файлу...

Ссылка на сообщение
Поделиться на другие сайты

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

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

simpla/design/html/settings.tpl

Ссылка на сообщение
Поделиться на другие сайты

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

simpla/design/html/settings.tpl

Таки да перепутал, не внимательный, спасибо!

Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

 

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

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

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

Изменено пользователем Axotn1k
Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...
  • 2 недели спустя...

 

 

Новая капча (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)

 

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

Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...

 

Здравствуйте, проблема с пунктом 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)

 

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

Проблема в руках.

 

небольшая невнимательность, ответ кроется в :

$captcha_code =  $this->request->post('g-recaptcha-response');
$response = $reCaptcha->verify($captcha_code, $order->ip);
Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

На выходных перепроверю все сам и обновлю инструкцию. Прошу прощение за неудобства.

Ссылка на сообщение
Поделиться на другие сайты
  • 2 недели спустя...

Лично у меня вот так заработало:
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())
 

Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...

Блин, делал делал, а оказалось, что тема не до конца раскрыта. Автор, ну как так? Теперь мне откатывать назад все придется.

Ссылка на сообщение
Поделиться на другие сайты
  • 2 недели спустя...
  • 3 месяца спустя...

Так и не нашол ответа по 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();

 

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

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...