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













