Перейти к содержимому


Фото
* * * * * 2 голосов

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


  • Чтобы отвечать, сперва войдите на форум
63 ответов в теме

#1 ps-simpla

ps-simpla

    Модератор в запасе :)

  • Фрилансер
  • 963 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Пермский край

Опубликовано 26.08.2015 - 21:18

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>

 

 

12710030.png12710031.png


Изменено: ps-simpla, 19.05.2016 - 14:05


#2 Julius123

Julius123
  • Пользователь
  • 200 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 21.10.2015 - 12:31

Не могу сказать на этом сайте, пишет нет прав доступа, хотя я зарегестрирован



#3 Eddy

Eddy
  • Пользователь
  • 9 сообщений
  • Дизайн
  • Версия CMS:2.x

Опубликовано 02.02.2016 - 15:45

посмотреть  Не могу открыть - сайт заблокирован



#4 Axotn1k

Axotn1k
  • Пользователь
  • 80 сообщений
  • Дизайн
  • Откуда:Украина, Киев

Опубликовано 26.02.2016 - 10:40

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



#5 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 26.02.2016 - 10:53

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

#6 mishanya

mishanya
  • Фрилансер
  • 2 185 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 26.02.2016 - 10:54

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

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

simpla/design/html/settings.tpl



#7 Axotn1k

Axotn1k
  • Пользователь
  • 80 сообщений
  • Дизайн
  • Откуда:Украина, Киев

Опубликовано 26.02.2016 - 10:56

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

simpla/design/html/settings.tpl

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



#8 Axotn1k

Axotn1k
  • Пользователь
  • 80 сообщений
  • Дизайн
  • Откуда:Украина, Киев

Опубликовано 26.02.2016 - 11:07

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

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



у меня же код такой, без if, как сдесь заменить правильно ?
elseif(empty($_SESSION['captcha_code']) || $_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))

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

Изменено: Axotn1k, 26.02.2016 - 11:34


#9 Suprun4uk

Suprun4uk
  • Пользователь
  • 201 сообщений

Опубликовано 13.05.2016 - 14:25

Поделитесь пожалуйста, ссылка битая.



#10 Suprun4uk

Suprun4uk
  • Пользователь
  • 201 сообщений

Опубликовано 25.05.2016 - 19:42

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>

 

 

12710030.png12710031.png


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

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



#11 snagovskiy

snagovskiy
  • Пользователь
  • 34 сообщений

Опубликовано 13.06.2016 - 23:52


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

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

 

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



#12 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 5 295 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 14.06.2016 - 04:04

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

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

#13 Suprun4uk

Suprun4uk
  • Пользователь
  • 201 сообщений

Опубликовано 14.06.2016 - 09:08

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


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

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


#14 Suprun4uk

Suprun4uk
  • Пользователь
  • 201 сообщений

Опубликовано 14.06.2016 - 09:10

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

 

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

 

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



#15 ps-simpla

ps-simpla

    Модератор в запасе :)

  • Фрилансер
  • 963 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Пермский край

Опубликовано 14.06.2016 - 20:22

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



#16 Netrea

Netrea
  • Пользователь
  • 4 сообщений
  • Пользователь

Опубликовано 25.06.2016 - 01:51

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



#17 Julius123

Julius123
  • Пользователь
  • 200 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 25.06.2016 - 19:51

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



#18 mishanya

mishanya
  • Фрилансер
  • 2 185 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 27.06.2016 - 15:37

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

 

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



#19 Ven

Ven
  • Пользователь
  • 2 сообщений
  • Пользователь

Опубликовано 07.09.2016 - 21:50

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



#20 zikkit

zikkit
  • Пользователь
  • 38 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 13.09.2016 - 01:39

Извините, так способ рабочий или нет?






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых