Перейти к содержанию
Форум поддержки пользователей VamShop

Добавляем каптчу (captcha) на страницу


support

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

В данной статье я просто покажу пример, как добавить каптчу на любую страницу интернет-магазина, основанного на VaM Shop.

Рассмотрим добавление каптчи на страницу обратной связи (Свяжитесь с нами) и на страницу регистрации клиента (create_account.php), но Вы не пугайтесь, принцип везде один и тот же, поняв принцип, Вы легко сможете добавить каптчу на любую страницу.

Для начала, что такое captcha - это случайно генерируемая картинка, на которой изображён набор цифр и/или символов в случайном порядке. Пользователь должен ввести указанные на картинки символы в форме, иначе он не может, к примеру, зарегистрироваться в магазине.

Каптча - это эффективный инструмент против спамеров, спам-ботов и прочей нечисти в интернете, также служит для предотвращения автоматических регистраций роботами, "бомбинга" и т.д. Полезная вещь и даже необходимая в некоторых ситуациях.

Человек видит такую случайную картинку и различает символы и цифры, а вот робот такие картинки понять не может, да, существуют и особо продвинутые роботы, которые умеют различать простенькие каптчи, но не более, т.е. каптча является достаточно надёжным средством, я имею в виду каптчу, которая используемая в VaM Shop, на картинке используются различные эффекты: "прыгающие буквы", фон. Надеюсь, что этого вполне достаточно для защиты страниц от роботов.

Так вот, в VaM Shop каптча применяется по умолчанию, к примеру, при подписке на рассылку, при напоминании пароля.

Я покажу, как добавлять каптчу и к другим страницам, в данном примере будет показано как добавить каптчу на страницу Свяжитесь с нами, т.к. очень часто через данную форму может приходить множество спама, могут просто "бомбить" Ваш почтовый ящик тысячами и десятками тысяч сообщений через форму обратной связи, вобщем, проблем может быть много от роботов, гуляющих по интернету, либо просто если кто-то решит максимально осложнить работу Вашего интернет-магазина.

Итак, начнём.

Файл свяжитесь с нами - /shop_content.php

Открываем его.

Добавляем в нашу форму обратной связи вывод случайно картинки и поле для ввода.

Находим:

$vamTemplate->assign('INPUT_TEXT', vam_draw_textarea_field('message_body', 'soft', 50, 15, $_POST[''],''));

Ниже добавляем:

$vamTemplate->assign('CAPTCHA_IMG', '<img src="'.vam_href_link(FILENAME_DISPLAY_CAPTCHA).'" alt="captcha" />');

$vamTemplate->assign('CAPTCHA_INPUT', vam_draw_input_field('captcha', '', 'size="6"', 'text', false));

Мы добавими две смарти-метки VVIMG и INPUT_CODE, который мы затем вставим в шаблон страницы обратной связи.

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

Ищем код:

if (vam_validate_email(trim($_POST['email']))) {

Меняем на:

if ((vam_validate_email(trim($_POST['email']))) && ($_POST['captcha'] == $_SESSION['vvcode'])) {

Теперь открываем шаблон страницы обратной связи. Это файл /templates/шаблон/module/contact_us.html.

Находим следующий код:

{#text_email#} {$INPUT_EMAIL}

Ниже добавляем:

{#text_sec_code#} {$CAPTCHA_IMG}

{#text_sec_code_text#} {$CAPTCHA_INPUT}

Как Вы видите, мы просто вставили метки, которые ранее определили в файле shop_content.php. а именно {$CAPTCHA_IMG} и {$INPUT_CODE}.

Также мы добавили в шаблон текстовые метки {#text_sec_code#} и {#text_sec_code_text#}.

Теперь нам нужно определить их в языковом файле.

Открываем файл /lang/lang_russian.conf.

Ищем блок констант для страницы contact_us, находим:

[contact_us]

text_name = 'Ваше имя:'

text_email = 'Ваш E-Mail:'

text_message = 'Ваше сообщение:'

text_success = 'Ваше сообщение было успешно отправлено.'

Добавляем новые константы, т.е. меняем данный код на:

[contact_us]

text_name = 'Ваше имя:'

text_email = 'Ваш E-Mail:'

text_message = 'Ваше сообщение:'

text_success = 'Ваше сообщение было успешно отправлено.'

text_sec_code = 'Картинка:'

text_sec_code_text = 'Укажите код на картинке:'

В принципе, на этом всё, разве что можно ещё добавить небольшое пояснение по поводу каптчи в текст ошибки.

Для этого в откройте файл /lang/russian/russian.php

Ищите:

define('ERROR_MAIL','Пожалуйста, проверьте указанные в форме данные');

Замените на:

define('ERROR_MAIL','Пожалуйста, проверьте указанные в форме данные.

Код, указанный на картинке нужно вводить с учётом регистра.

Если на картинке буква заглавная, Вы тоже должны вводить заглавную букву.');

Вот и всё, мы защитили страницу обратной связи от "интернет-нечисти" :)

Ещё один пример, добавим каптчу на страницу регистрации клиента create_account.php.

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

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

Итак, открываем файл /create_account.php

Добавляем проверку, правильно ли посетитель ввёл код, указанный на картинке.

Ищем:

if (ACCOUNT_TELE == 'true') {

if (strlen($telephone) < ENTRY_TELEPHONE_MIN_LENGTH) {

$error = true;

$messageStack->add('create_account', ENTRY_TELEPHONE_NUMBER_ERROR);

}

}

Добавляем после:

if ($_POST['captcha'] != $_SESSION['vvcode']) {

$error = true;

$messageStack->add('create_account', ENTRY_CAPTCHA_ERROR);

}

Теперь добавлем метки для шаблона.

Ищем:

$vamTemplate->assign('INPUT_PASSWORD', vam_draw_password_fieldNote(array ('name' => 'password', 'text' => ' '. (vam_not_null(ENTRY_PASSWORD_TEXT) ? ''.ENTRY_PASSWORD_TEXT.'' : '')), '', 'id="password"'));

Добавляем после:

$vamTemplate->assign('CAPTCHA_IMG', '<img src="'.vam_href_link(FILENAME_DISPLAY_CAPTCHA).'" alt="captcha" />');

$vamTemplate->assign('CAPTCHA_INPUT', vam_draw_input_field('captcha', '', 'size="6"', 'text', false));

Теперь добавим эти метки в шаблон, т.е. добавим вывод картинки на страницу регистрации.

Открываем файл /templates/vamshop/module/create_account.html

Ищем:

{#text_confirmation#} {$INPUT_CONFIRMATION}

Добавляем после:

{#text_sec_code#} {$CAPTCHA_IMG}

{#text_sec_code_text#} {$CAPTCHA_INPUT}

Последний шаг, добавим текстовые константы в языковые файлы.

Открываем файл /lang/russian/lang_russian.conf

Ищем:

# Creat account

[create_account]

heading_create_account = 'Регистрация'

Добавляем после:

text_sec_code = 'Картинка:'

text_sec_code_text = 'Укажите код на картинке (учитывая регистр):'

Добавим текстовую константу для ошибки, в случае, если посетитель неправильно указал код на картинке.

Открываем файл /lang/russian/russian.php

Ищем:

define('ENTRY_PASSWORD_NEW_ERROR_NOT_MATCHING', 'Поля Подтвердите пароль и Новый пароль должны совпадать.');

Добавляем после:

define('ENTRY_CAPTCHA_ERROR','Вы указали неправильный код картинки. Код, указанный на картинке нужно вводить с учётом регистра.

Если на картинке буква заглавная, Вы тоже должны вводить заглавную букву.');

Вот и всё, мы добавили каптчу на страницу регистрации клиента.

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