reCAPTCHA один з найкращих сервісів для захисту від ботів, з цього ми навчимося як її включати, налаштовувати, використовувати в своєму компоненті і без компонента
Перше що нам потрібно це налаштувати плагін reCAPTCHA в самій системі, для цього ми переходимо в менеджер плагінів в адміністративній частині сайту:
Відкриваємо плагін. В плагіні нам потрібно по-перше включити його, а по-друге вибрати версію 2.0:
Якщо ви вже зареєстровані в google то вам достатньо буде натиснути на кнопку "Get reCAPTCHA", якщо ще не зареєстровані то вам потрібно буде пройти цю процедуру, після чого вам відкриється форма для реєстрації сайту на якому буде працювати reCAPTCHA:
Тут ми вводимо назву нашого сайту і домен на якому буде використовуватися reCAPTCHA, так як я працюю на локальному домені, то я вказую local.dev, і натискаємо на кнопку "Реєстрація", і ми побачимо нову сторінку з різними даними, нам потрібні ось ці два поля:
Те що в поле ключ нам потрібно внести в плагіні "CAPTCHA - reCAPTCHA" в поле "Публічний ключ", то що в поле "Секретний ключ" потрібно ввести в поле "Приватний ключ", в результаті настройки нашого плагіна будуть виглядати так:
Зберігаємо і закриваємо плагін! Налаштування його завершені, і тепер нам потрібно перевірити його працездатність! Для цього ми 1. Йдемо в налаштування менеджера користувачів; 2. Включаємо опцію "Дозволити реєстрацію користувачів"; 3. В поле "CAPTCHA" вибираємо "CAPTCHA - reCAPTCHA":
Якщо у вас з'явилося це поле, то вітаю, ви все вірно налаштували, якщо не з'явилося, то значить на якому то кроці ви допустили помилку, вам доведеться повернутися в початок і подивитися що ви упустили!
На цьому настройка капчи завершена, тепер ми розглянемо як використовувати капчу в своєму компоненті використовуючи механізм створення форми в Joomla, тобто JForm, і за умови що компонент у вас побудований по MVC стандарту Joomla з використанням форм як описано в цьому уроці
Тут здається все гранично просто, зайти в компонент com_users відкрити файл: components / com_users / models / forms / registration.xml і скопіювати поле c опис капчи:
Зберегти і вивести поле в шаблоні виду через: form-> getInput ( 'captcha'); ?>! Але не тут то було) Капча не відображається)
А все тому що треба додати ще один атрибут в field: plugin = "recaptcha". Як не дивно в офіційній документації нічого про це атрибуті не сказано, але я підозрюю що це швидше за все пов'язано з тим що тип капчі можна змінити динамічно, і швидше за все потрібно десь в php скрипт форми ставити це атрибут, але так як ми працюємо саме з reCAPTCHA, з цього ми вручну додаємо цей атрибут:
Після того як з'явиться наше поле в формі, нам потрібно провести перевірку його на ту чи користувач пройшов тест від google або він не бот. Для цього нам потрібно перевизначити метод validate в моделі нашої форми, і зробити так:
Після цього при спробі відправити форму не пройшовши перевірку ви отримаєте таке повідомлення:
А тепер розглянемо випадок коли ми не використовуємо MVC і JForm і у нас проста форма! Для початку нам потрібно вивести наше поле, що б його вивести потрібно написати такий код:
Після цього вам потрібно в скрипті який приймає вашу форму виконати перевірку або користувач пройшов тест, виконується перевірка точно так само як і в валідації моделі: