Jump to content

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


Recommended Posts

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','Вы указали неправильный код картинки. Код, указанный на картинке нужно вводить с учётом регистра.

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

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...