Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Captcha на странице авторизации(account/login)


a155

Recommended Posts

Кто нибудь может подсказать, как прикрутить Google reCAPTCHA на страницу авторизации клиентов на OpenCart 2.0.3.1 ?

Заметил постоянные заходы ботов на эту страницу с вводом email, после чего email сохраняется в базе в разделе `oc_customer_login`

 

Надіслати
Поділитися на інших сайтах


39 минут назад, Designer сказал:

# oc 2.1.*
# 1. catalog/controller/account/login.php

# Index Function
# найти
$data['column_left'] = $this->load->controller('common/column_left');
# добавить выше
if ($this->config->get($this->config->get('config_captcha') . '_status')) {
	$data['captcha'] = $this->load->controller('captcha/' . $this->config->get('config_captcha'));
} else {
	$data['captcha'] = '';
}

# Validate Function
# Найти
$customer_info = $this->model_account_customer->getCustomerByEmail($this->request->post['email']); 
# добавить выше
if ($this->config->get($this->config->get('config_captcha') . '_status')) {
	$captcha = $this->load->controller('captcha/' . $this->config->get('config_captcha') . '/validate');

	if ($captcha) {
		$this->error['warning'] = $captcha;
	}
}

# 2. catalog/view/theme/ВАША ТЕМА/template/account/login.tpl

# найти
<input type="submit" value="<?php echo $button_login; ?>" class="btn btn-primary" />
# добавить ниже
<?php echo $captcha; ?>

 

В 2.0.3.1 не заработало. Ошибок нет.

Надіслати
Поділитися на інших сайтах


53 минуты назад, Designer сказал:

# oc 2.0.3
# 1. catalog/controller/account/login.php

# Index Function
# найти
$data['column_left'] = $this->load->controller('common/column_left');
# добавить выше
if ($this->config->get('config_google_captcha_status')) {
$this->document->addScript('https://www.google.com/recaptcha/api.js');
	$data['site_key'] = $this->config->get('config_google_captcha_public');
} else {
	$data['site_key'] = '';
}

# Validate Function
# Найти
$customer_info = $this->model_account_customer->getCustomerByEmail($this->request->post['email']); 
# добавить выше
if ($this->config->get('config_google_captcha_status') && empty($this->error['warning'])) {
	if (isset($this->request->post['g-recaptcha-response'])) {
		$recaptcha = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($this->config->get('config_google_captcha_secret')) . '&response=' . $this->request->post['g-recaptcha-response'] . '&remoteip=' . $this->request->server['REMOTE_ADDR']);

		$recaptcha = json_decode($recaptcha, true);

		if (!$recaptcha['success']) {
			$this->error['warning'] = $this->language->get('error_captcha');
		}
	} else {
		$this->error['warning'] = $this->language->get('error_captcha');
	}
}

# 2. catalog/view/theme/ВАША ТЕМА/template/account/login.tpl

# найти
<input type="submit" value="<?php echo $button_login; ?>" class="btn btn-primary" />
# добавить ниже
<?php if ($site_key) { ?>
<div class="form-group">
  <div class="col-sm-12">
    <div class="g-recaptcha" data-sitekey="<?php echo $site_key; ?>"></div>
  </div>
</div>
<?php } ?>

 

Спасибо! Помогло. Только в 

# 2. catalog/view/theme/ВАША ТЕМА/template/account/login.tpl
добавить пришлось выше этой строчки: 
<input type="submit" value="<?php echo $button_login; ?>" class="btn btn-primary" />

А то капча вылезала за пределы раздела. 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.