Перейти к содержимому


RuWeb.Net

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


  • Вы не можете ответить в тему
No replies to this topic

#1 support

    Служба поддержки

  • Администраторы
  • 34 603 Сообщений:

Отправлено 21 июня 2011 - 06:41

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

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





1 человек читают эту тему

0 пользователей, 1 гостей, 0 скрытых пользователей