Модуль Установка reCAPTCHA 2.0 Okay CMS

nexis33

Постоялец
Регистрация
11 Фев 2015
Сообщения
124
Реакции
6
Тем кто хочет поставить себе капчу от гугл.
p.s статья не моя.
1 Заходим на сайт Для просмотра ссылки Войди или ЗарегистрируйсяДля просмотра ссылки Войди или ЗарегистрируйсяДля просмотра ссылки Войди или Зарегистрируйся[/url]
Получаем ключи, которые потом будет записывать в админке в разделе "Настройки"
1.1 Загружаем файлы в папку captcha
Для просмотра ссылки Войди или Зарегистрируйся
2. Открываем файл /backend/SettingsAdmin.php
добавляем примерно в строку 50:
PHP:
/* ReCaptcha */
$this->settings->site_code = $this->request->post('site_code');
$this->settings->secret_code = $this->request->post('secret_code');

3. открываем файл backend/design/html/settings.tpl
добавляем:
HTML:
<div class="block layer">
   <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>
</div>

4. Открываем файл /view/View.php
вставляем:
PHP:
require_once('captcha/autoload.php');

5. Открываем файлы /view/CartView.php | BlogView.php | FeedbackView.php | ProductView.php | RegisterView.php
добавляем:
PHP:
$response = null;
$reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code);

Ищем :
PHP:
$captcha_code =  $this->request->post('captcha_code', 'string');
заменяем на:
PHP:
$captcha_code =  $this->request->post('g-recaptcha-response');$response = $reCaptcha->verify($captcha_code, $order->ip);

*Ищем:
PHP:
elseif($_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))
*заменяем на:
PHP:
elseif($response->getErrorCodes())

* в некоторых случаях будет
PHP:
elseif(empty($_SESSION['captcha_code']) || $_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))
Заменяем на:
PHP:
elseif($response->getErrorCodes())
Или:
PHP:
if ($_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))
Заменяем на:
PHP:
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,
ищем:
HTML:
<input class="form-control" type="text" name="captcha_code" value="" data-format="\d\d\d\d\d" data-notice="{$lang->form_enter_captcha}" data-language="{$translate_id['form_enter_captcha']}" placeholder="{$lang->form_enter_captcha}*"/>
Заменяем на:
HTML:
<div class="g-recaptcha" data-sitekey="{$settings->site_code|escape}"></div>

В итоге получаем готовую рекапчу от гугл. Метод рабочий






 

slonkg

Постоялец
Регистрация
24 Янв 2013
Сообщения
31
Реакции
23
Как запилить капчу на вторую версию?
 

swart2010

Постоялец
Регистрация
12 Апр 2009
Сообщения
450
Реакции
126
Указанных файлов нет (((

Спам прет через обратный звонок, уже не знаю как его остановить...
так обновисть с репы на актуальную версию, там они в обратном звонке добавили поддержку, капчи!
 

babahalki

Постоялец
Регистрация
6 Май 2016
Сообщения
247
Реакции
107
Дрянная функция. У лучше пусть спам прет, чем заставлять людей проходить рекапчу. Просто надо капчу сделать немного хитрее. Мы у себя поставили такое условие: с момента наведения на поле ввода сообщения, до момента отправки сообщение должно пройти не менее 2 сек. Все спамботы сразу отвалились, даже капчу убрали после этого.
 

Minor

Постоялец
Регистрация
16 Авг 2012
Сообщения
258
Реакции
110
Дрянная функция. У лучше пусть спам прет, чем заставлять людей проходить рекапчу. Просто надо капчу сделать немного хитрее. Мы у себя поставили такое условие: с момента наведения на поле ввода сообщения, до момента отправки сообщение должно пройти не менее 2 сек. Все спамботы сразу отвалились, даже капчу убрали после этого.
Метод интересный, но полагаю избыточный.
Если говорим об отсеве случайных ботов, то достаточно любое обязательное поле, тот же submit сделать его disabled и убирать атрибут через JS без всяких пауз, все равно боты JS исполнять врядли будут.
 

Julius123

Создатель
Регистрация
13 Июл 2014
Сообщения
17
Реакции
0
Подскажите как сделать вывод нескольких капч на странице?
 

slonkg

Постоялец
Регистрация
24 Янв 2013
Сообщения
31
Реакции
23
Кто-нить ставил ее на OKAYCMS V2? Какой алгоритм интеграции?

Небольшие поправки по сабжу (актуально для OKAYCMS v2)
По пунктам:
п.1
Заходим на сайт Для просмотра ссылки Войди или Зарегистрируйся
Получаем ключи, которые потом будет записывать в админке в разделе "Настройки"

п.1.1
Загружаем файлы в папку captcha
Для просмотра ссылки Войди или Зарегистрируйся

п.2
Открываем файл /backend/core/SettingsGeneralAdmin.php
PHP:
/* ReCaptcha */
$this->settings->site_code = $this->request->post('site_code');
$this->settings->secret_code = $this->request->post('secret_code');
код вставляем в 23 строку (т.е. внутри первого if)
примеры
upload_2017-11-7_20-31-36.png

п.3
Открываем файл backend/design/html/settings_general.tpl
и добавляем в него
HTML:
<div class="block layer">
   <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>
</div>

Этот код добавит в админке Настройки сайта>Настройки Сайта два поля, куда после нужно вставить ключи, выданные вам сервисом Google
upload_2017-11-7_21-3-0.png

п.4
Открываем файл /view/View.php
вставляем:

PHP:
require_once('captcha/autoload.php');

п.5

Открываем файлы из папки /view/ CartView.php | BlogView.php | FeedbackView.php | ProductView.php | RegisterView.php

п.5.1
Вставляем код в первую функцию, каждого файла
PHP:
 $response = null;
        $reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code);
примеры
upload_2017-11-7_20-43-16.png

upload_2017-11-7_20-43-52.png

п.5.2
Ищем :
PHP:
$captcha_code =  $this->request->post('captcha_code', 'string');

в файлах feedbackView.php и RegisterView.php код немного другой
PHP:
$captcha_code = $this->request->post('captcha_code');

заменяем его во всех файлах на
PHP:
$captcha_code =  $this->request->post('g-recaptcha-response');$response = $reCaptcha->verify($captcha_code, $order->ip);

п.5.3
Ищем
PHP:
elseif($_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))
или
PHP:
elseif(empty($_SESSION['captcha_code']) || $_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))
или
PHP:
if ($_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))

и внутри них меняем только условие на
PHP:
$response->getErrorCodes()
Только условия! чтобы выглядело так
upload_2017-11-7_20-52-34.png

upload_2017-11-7_20-53-32.png

п.6

Открываем файлы design/[ваш шаблон]/html/cart | feedback | post | product | register.tpl,
ищем такой или схожий код, обычно имеющий класс captcha:
HTML:
<input class="form-control" type="text" name="captcha_code" value="" data-format="\d\d\d\d\d" data-notice="{$lang->form_enter_captcha}" data-language="{$translate_id['form_enter_captcha']}" placeholder="{$lang->form_enter_captcha}*"/>

Заменяем на:
HTML:
<div class="g-recaptcha" data-sitekey="{$settings->site_code|escape}"></div>

п.7
Не забываем добавить в index.tpl код, перед закрывающем тэгом </head>
HTML:
<script src='https://www.google.com/recaptcha/api.js'></script>

Огромный респект топикстартеру!
 

Вложения

  • upload_2017-11-7_20-53-6.png
    upload_2017-11-7_20-53-6.png
    21,1 KB · Просмотры: 7
  • upload_2017-11-7_21-5-2.png
    upload_2017-11-7_21-5-2.png
    17,7 KB · Просмотры: 7
Последнее редактирование:

wheelsman

Создатель
Регистрация
22 Авг 2009
Сообщения
33
Реакции
0
Помогите! OKAY 2.1.1 + CAROL, сваливается в 500 ошибку, все делал по инструкции...
 
Сверху