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

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


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

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

Я пока поставил на регистрацию. Работает

 

 

 

View.php

<?PHP

require_once('View.php');

class RegisterView extends View
{
  function fetch()
  {
      $default_status = 1; // Активен ли пользователь сразу после регистрации (0 или 1)
		
      if($this->request->method('post') && $this->request->post('register'))
      {
         $response = null;
         $reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code);
            
         $name			= $this->request->post('name');
         $email			= $this->request->post('email');
         $password		= $this->request->post('password');
			
         $captcha_code   = $this->request->post('g-recaptcha-response');
         $response = $reCaptcha->verify($captcha_code, $order->ip);
			
         $this->design->assign('name', $name);
         $this->design->assign('email', $email);
			
         $this->db->query('SELECT count(*) as count FROM __users WHERE email=?', $email);
         $user_exists = $this->db->result('count');

         ...

 

 

 

 

 

 

register.tpl

<form method="post">
  <fieldset class="form">
    <div class="form-group">
      <label class="form-group__label" for="register-name">Имя</label>
      <input id="register-name" class="form-field form-group__input" type="text" name="name" data-format=".+" data-notice="Введите имя" value="{$name|escape}" maxlength="255" />
    </div>

    <div class="form-group">
      <label class="form-group__label" for="register-email">Email</label>
      <input id="register-email" class="form-field form-group__input" type="text" name="email" data-format="email" data-notice="Введите email" value="{$email|escape}" maxlength="255" />
    </div>

    <div>
      <label class="form-group__label" for="register-password">Пароль</label>
      <input id="register-password" class="form-field form-group__input" type="password" name="password" data-format=".+" data-notice="Введите пароль" value="" />
    </div> 
						
    <div class="g-recaptcha" data-sitekey="{$settings->site_code|escape}"></div>

    <input type="submit" class="button reg-btn" name="register" value="Зарегистрироваться" />

  </fieldset>
</form>

 

 

 

Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 93
  • Дата создания
  • Последний ответ

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

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

 

 

Новая капча (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 ПУНКТЕ ? КАКИЕ РЕШЕНИЯ ?

Для начала отключить капслок и перестать писать как блондинко.

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

Я понимаю что проблема может быть руках но в 5 пункте делаю все по списку на главной странице все хорошо она работает когда захожу в карточку товара то сайт не работает

 

Прошу помощи т.к. понять не могу из-за чего

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

$response = null;
$reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code); 

Вот это надо вставлять не после class а в ФУНКЦИЮ

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

может кому пригодится. Сделал тоже самое но для vqmod

 


установка:

1) распаковать содержимое архива в папку vqmod/mod

2) пройти по ссылке ВАШ_САЙТ/vqmod/recaptcha/install

3) выполнить пункты 1 и 7 из инструкции

 

 

 

recaptcha.zip

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

Всем привет

Выдает ошибку

Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in /home/playboy/public_html/captcha/autoload.php on line 8

 

Все делал по инструкции, проверил еще раз, Кто то может подсказать где ошибка ?

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

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

Всем привет

Выдает ошибку

Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in /home/playboy/public_html/captcha/autoload.php on line 8

 

Все делал по инструкции, проверил еще раз, Кто то может подсказать где ошибка ?

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

 

Полагаю у вас наверное php < 5.3 версии

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

Сделал по инструкции в первом посте - всё заработало.

 

 

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

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

Выдаёт такую ошибку

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

Скажите что сделал не так?

FeedbackView.php

SettingsAdmin.php

View.php

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

Выдаёт такую ошибку

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

Скажите что сделал не так?

 

 

все не так.

 

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

class FeedbackView extends View уже вверху есть зачем вы дублируете это 

 

нужно было вставить

$response = null;
$reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code);  

перед

$feedback = new stdClass;
Ссылка на сообщение
Поделиться на другие сайты

Выдаёт такую ошибку

Fatal error: Uncaught exception 'RuntimeException' with message 'No secret provided' in /home/captcha/ReCaptcha/ReCaptcha.php:61 Stack trace: #0 /home/view/RegisterView.php(9): ReCaptcha\ReCaptcha->__construct(NULL) #1 /home/view/IndexView.php(92): RegisterView->fetch() #2 /home/index.php(18): IndexView->fetch() #3 {main} thrown in /home/captcha/ReCaptcha/ReCaptcha.php on line 61

Разобрался, не ввел ключи в админке  :unsure:

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

Еще пытаюсь поставить но второй магазин на котором стоит Okay

Там например в RegisterView строка выглядит так:

} elseif($this->settings->captcha_register && (($_SESSION['captcha_code'] != $captcha_code || empty($captcha_code)) || empty($_SESSION['captcha_code']))) {  
                $this->design->assign('error', 'captcha');

заменяю на:

elseif($response->getErrorCodes())

и при отправке формы ошибка

Fatal error: Call to a member function getErrorCodes() on null in /home/view/RegisterView.php on line 37
Ссылка на сообщение
Поделиться на другие сайты

 

Еще пытаюсь поставить но второй магазин на котором стоит Okay

Там например в RegisterView строка выглядит так:

} elseif($this->settings->captcha_register && (($_SESSION['captcha_code'] != $captcha_code || empty($captcha_code)) || empty($_SESSION['captcha_code']))) {  
                $this->design->assign('error', 'captcha');

заменяю на:

elseif($response->getErrorCodes())

и при отправке формы ошибка

Fatal error: Call to a member function getErrorCodes() on null in /home/view/RegisterView.php on line 37

У вас не создана функция getErrorCodes

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

У вас не создана функция getErrorCodes

 

эту ф-ю не нужно создавать она находится в подключаемом класе апи. просто не правильно подключили

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

Друзья, подключил на локальном. reCAPTCHA выходит. отправляю например комментарии к товару, то после нажатие Отправить выдает предупреждение :

Warning: file_get_contents() [function.file-get-contents]: Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in W:\home\plama.loc\www\captcha\ReCaptcha\RequestMethod\Post.php on line 68

Warning: file_get_contents(https://www.google.com/recaptcha/api/siteverify) [function.file-get-contents]: failed to open stream: Invalid argument in W:\home\plama.loc\www\captcha\ReCaptcha\RequestMethod\Post.php on line 68

Warning: Cannot modify header information - headers already sent by (output started at W:\home\plama.loc\www\captcha\ReCaptcha\RequestMethod\Post.php:68) in W:\home\plama.loc\www\view\ProductView.php on line 275

Warning: Cannot modify header information - headers already sent by (output started at W:\home\plama.loc\www\captcha\ReCaptcha\RequestMethod\Post.php:68) in W:\home\plama.loc\www\index.php on line 33

и там где форма пишет:

                        Неверно введена капча
 
это с чем связано? быть может из-за того что сайт на локальном?
Изменено пользователем DarAmal
Ссылка на сообщение
Поделиться на другие сайты

на локальном не сработало, а вот после переноса на хостинг тоже не сразу заработало.

файлы, что были ранее описаны настроил немного по другому. Потом все пошло как надо.

Если кому надо, вот нужные файлы:

SettingsAdmin.php

View.php

BlogView.php

CartView.php

FeedbackView.php

ProductView.php

RegisterView.php

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

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


Сделал по инструкции - всё заработало.


Но теперь комментарии к товарам и отзывы оставляются без модерации, подскажите куда копать?


 


HELP!

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

 

Но теперь комментарии к товарам и отзывы оставляются без модерации, подскажите куда копать?

странно, такого не должно быть.

 

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

странно, такого не должно быть.

 

ситуация такая: модерации требует только первая запись. ее одобряю и для остальных уже модерация ненужна, добавляются записи сами.

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

ситуация такая: модерации требует только первая запись. ее одобряю и для остальных уже модерация ненужна, добавляются записи сами.

ну по идее - такое изначально было в Simpla.

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

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

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

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

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

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

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

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

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

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