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