Новости

Покращуємо авторизацію в WordPress

  1. Автор: Андрій Кудлай
  2. Основи створення тим WordPress

Від автора: В цьому уроці ми попрацюємо з формою авторизації в WordPress

Від автора: В цьому уроці ми попрацюємо з формою авторизації в WordPress. WordPress - це насправді чудова по своїй простоті і функціональності CMS. Однак, і в ній є свої недоробки. Однією з таких недоробок є процес авторизації в WordPress.

Однією з таких недоробок є процес авторизації в WordPress

Автор: Андрій Кудлай

Звуть мене Андрій Кудлай. Родом я з України, живу в Дніпропетровську. Веб-програмування навчався сам. Непогано знаю HTML, CSS, PHP, JavaScript.

Що ж саме нас може не влаштовувати в процесі авторизації в WordPress? Особисто мені не подобаються ті помилки, які WP показує в після невдалої авторизації. Наприклад, спробуємо ввести некоректний логін, після якого ми бачимо помилку такого змісту: ПОМИЛКА: Неправильне ім'я користувача.

Наприклад, спробуємо ввести некоректний логін, після якого ми бачимо помилку такого змісту: ПОМИЛКА: Неправильне ім'я користувача

Безкоштовний курс «Основи створення тим WordPress»

Вивчіть курс і дізнайтеся, як створювати багатомовні теми з нестандартною структурою сторінок

завантажити курс

Якщо ми спробуємо ввести вірний логін, але невірний пароль, то побачимо вже таке повідомлення: ПОМИЛКА: Введений вами пароль користувача admin невірний.

Чим погані дані помилки? Тим, що вони полегшують роботу потенційному хакеру, який намагається зламати сайт методом підбору пароля. Коли йде підбір, то тут потрібно підібрати не тільки пароль, але і логін, якщо він невідомий. А ось такими ось помилками, ми прямо підказуємо, що введений варіант логіна невірний, або ж, що ось такий ось логін є в системі.

Саме тому хотілося б замість подібних помилок виводити вже традиційне повідомлення на кшталт: Невірно введений логін або пароль. Такий помилкою ми вже не нагадує, що ж з пари логін / пароль було введено невірно. Давайте спробуємо замінити ці помилки своєї.

Для цього ми скористаємося механізмом хуков WP. Хукі - це спеціальні функції, які дозволяють нам взаємодіяти з ядром WP в певні моменти. Наприклад, момент авторизації користувача. Тут ми можемо скористатися спеціальним хуком, тобто функцією, яка спрацює саме в даний момент. Хук (hook) перекладається як «гачок», «зачіпка». І ми в буквальному сенсі слова можемо причепити до хуку власну функцію.

Іншими словами, ми можемо в момент авторизації подивитися, чи успішно авторизувався користувач або виникла помилка. Якщо є помилка, тоді наша функція просто замінить цю помилку своєї. Все досить просто.

Отже, для початку скористаємося хуком login_errors, прикладів роботи з яким можна знайти безліч в мережі. У файл функцій (functions.php) вашої теми додайте наступний код:

php) вашої теми додайте наступний код:

Безкоштовний курс «Основи створення тим WordPress»

Вивчіть курс і дізнайтеся, як створювати багатомовні теми з нестандартною структурою сторінок

завантажити курс

add_filter ( 'login_errors', 'my_login_errors');

function my_login_errors () {

return "Помилка!" ;

}

Давайте його розберемо. Отже, для того, щоб прив'язати нашу функцію до хуку, ми можемо скористатися функціями add_filter () або add_action () в залежності від того, чи є даний хук фільтром або дією .

Функція add_filter () чіпляє до фільтру login_errors () нашу функцію my_login_errors (), яка описана нижче. Фільтр login_errors () застосовується до помилок авторизації, які виводяться на екран. Відповідно, ми можемо просто замінити ці помилки своєї, що ми і робимо, повертаючи потрібний текст помилки функцією my_login_errors (). Загалом, нічого складного.

Спробуємо авторизуватися тепер. Як бачимо, на екран зараз виводиться наш текст помилки і в разі неправильного введення логіна, і в разі вірного введення логіна. Все начебто чудово. Однак ось невдача: у разі вірного введення логіна цей логін запам'ятовується в поле форми для введення імені користувача, що дає зрозуміти потенційному зломщикові, що логін був введений вірно.

Тому очевидно, що даний код вирішив нашу проблему лише частково. Що ж робити? Давайте спробуємо скористатися іншим хуком, який займається не висновком помилок на екран, а безпосередньо пов'язаний з авторизацією і поверненням таких помилок може. Для цього ми скористаємося фільтром authenticate .

У відео версії уроку ви знайдете докладний опис роботи з даними хуком. Тут же я приведу сам код і трохи прокоментую роботу з ним:

add_filter ( 'authenticate', 'my_auth', 20, 3);

function my_auth ($ user, $ username, $ password) {

if (isset ($ user -> errors [ 'invalid_username']) || isset ($ user -> errors [ 'incorrect_password'])) {

return new WP_Error ( 'broke', '<b> ПОМИЛКА </ b>: невірний логін або пароль');

}

return $ user;

}

Отже, до фільтру authenticate ми причепили функцію my_auth (). Також передамо 2 додаткових параметра. Третій параметр - 20 - відповідає за пріоритет виконання нашої функції (за замовчуванням 10). Чим вище пріоритет, тим пізніше функція виконається. Наша функція повинна виконається пізніше доданих до authenticate фільтрів, тому ми встановили пріоритет більше 10. Четвертий параметр - 3 - відповідає за кількість аргументів, яке буде приймати наша призначена для користувача функція. Функція my_auth () повинна прийняти саме 3 аргументу, опису яких ви можете знайти в документації до хуку authenticate.

Ну і можемо перевірити наш код. Тепер, навіть якщо ми введемо вірний логін, але невірний пароль, то користувач не існує зберігатиметься. Ну і при некоректній авторизації ми завжди будемо бачити власний текст помилки.

На цьому я з вами прощаюся. Успіху і до нових зустрічей!

Успіху і до нових зустрічей

Безкоштовний курс «Основи створення тим WordPress»

Вивчіть курс і дізнайтеся, як створювати багатомовні теми з нестандартною структурою сторінок

завантажити курс

Основи створення тим WordPress

Навчіться створювати багатомовні теми з нестандартною структурою сторінок

дивитися

Що ж саме нас може не влаштовувати в процесі авторизації в WordPress?
Чим погані дані помилки?
Що ж робити?

Уважаемые партнеры, если Вас заинтересовала наша продукция, мы готовы с Вами сотрудничать. Вам необходимо заполнить эту форму и отправить нам. Наши менеджеры в оперативном режиме обработают Вашу заявку, свяжутся с Вами и ответят на все интересующее Вас вопросы.

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: