Модуль Установка 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>

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






 
Как запилить капчу на вторую версию?
 
Указанных файлов нет (((

Спам прет через обратный звонок, уже не знаю как его остановить...
так обновисть с репы на актуальную версию, там они в обратном звонке добавили поддержку, капчи!
 
Дрянная функция. У лучше пусть спам прет, чем заставлять людей проходить рекапчу. Просто надо капчу сделать немного хитрее. Мы у себя поставили такое условие: с момента наведения на поле ввода сообщения, до момента отправки сообщение должно пройти не менее 2 сек. Все спамботы сразу отвалились, даже капчу убрали после этого.
 
Дрянная функция. У лучше пусть спам прет, чем заставлять людей проходить рекапчу. Просто надо капчу сделать немного хитрее. Мы у себя поставили такое условие: с момента наведения на поле ввода сообщения, до момента отправки сообщение должно пройти не менее 2 сек. Все спамботы сразу отвалились, даже капчу убрали после этого.
Метод интересный, но полагаю избыточный.
Если говорим об отсеве случайных ботов, то достаточно любое обязательное поле, тот же submit сделать его disabled и убирать атрибут через JS без всяких пауз, все равно боты JS исполнять врядли будут.
 
Подскажите как сделать вывод нескольких капч на странице?
 
Кто-нить ставил ее на 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
Последнее редактирование:
Помогите! OKAY 2.1.1 + CAROL, сваливается в 500 ошибку, все делал по инструкции...
 
Назад
Сверху