Авторизация через телефон становится все более востребованной функцией для сайтов на WordPress. Это упрощает процесс входа для пользователей, повышает безопасность и улучшает пользовательский опыт. В этой статье вы узнаете, как реализовать авторизацию через номер телефона в WordPress с помощью готовых плагинов и собственного кода.
Почему стоит использовать авторизацию через телефон в WordPress
Традиционная авторизация по логину и паролю часто вызывает сложности у пользователей: забытые пароли, необходимость создавать сложные комбинации. Авторизация через телефон позволяет упростить вход, используя одноразовые коды (OTP) или SMS-подтверждение.
Кроме удобства, это повышает безопасность — к телефону привязан пользователь, и для входа требуется подтверждение владения устройством.
Для сайта на WordPress такая схема может быть реализована по-разному: с помощью плагинов, сторонних сервисов или кастомного кода.
Обзор плагинов для авторизации по телефону в WordPress
1. WP SMS Login
Плагин позволяет добавить вход через номер телефона с подтверждением SMS-кодом. Поддерживает интеграцию с популярными SMS-шлюзами, такими как Twilio, SMS.ru, и другими. Позволяет настроить отправку OTP и автоматическую регистрацию новых пользователей по номеру.
Основные возможности:
- Вход и регистрация по номеру телефона
- Отправка одноразового пароля по SMS
- Поддержка нескольких SMS-провайдеров
- Настройка шаблонов сообщений
2. MiniOrange OTP Verification
Этот плагин позволяет добавить многофакторную аутентификацию с использованием OTP, включая подтверждение по телефону. Поддерживает SMS и голосовые звонки для подтверждения.
Преимущества:
- Поддержка нескольких методов OTP
- Интеграция с WooCommerce и другими плагинами
- Возможность настройки времени жизни кода
Реализация авторизации через телефон на примере кастомного кода
Если вы хотите контролировать процесс полностью, можно реализовать авторизацию через телефон с помощью собственного кода и API SMS-провайдера, например, Twilio.
Шаг 1. Добавление поля телефона в форму входа
Для начала добавим поле для ввода номера телефона в форму авторизации WordPress. Для этого используем хук login_form и функцию wpskills_add_phone_field_to_login:
function wpskills_add_phone_field_to_login() {
?>
<p>
<label for="user_phone">Телефон<br>
<input type="text" name="user_phone" id="user_phone" class="input" value="" size="20"></label>
</p>
<?php
}
add_action('login_form', 'wpskills_add_phone_field_to_login');Шаг 2. Обработка отправки формы и отправка OTP
При отправке формы нужно проверить номер телефона, сгенерировать одноразовый код и отправить его по SMS. Для примера используем Twilio API.
function wpskills_process_phone_login() {
if (isset($_POST['user_phone'])) {
$phone = sanitize_text_field($_POST['user_phone']);
// Генерируем OTP
$otp = rand(100000, 999999);
// Сохраняем OTP и телефон в сессии
session_start();
$_SESSION['wpskills_otp'] = $otp;
$_SESSION['wpskills_phone'] = $phone;
// Отправка SMS через Twilio
require_once 'path/to/twilio-php/Services/Twilio.php';
$AccountSid = 'YOUR_TWILIO_SID';
$AuthToken = 'YOUR_TWILIO_TOKEN';
$client = new Services_Twilio($AccountSid, $AuthToken);
try {
$client->account->messages->create(array(
'To' => $phone,
'From' => 'YOUR_TWILIO_PHONE',
'Body' => 'Ваш код для входа: ' . $otp
));
wp_redirect(site_url('/otp-verification'));
exit;
} catch (Exception $e) {
wp_die('Ошибка отправки SMS: ' . $e->getMessage());
}
}
}
add_action('login_form_login', 'wpskills_process_phone_login');Шаг 3. Создание страницы для ввода OTP
Создайте страницу с коротким кодом, который выводит форму для ввода кода. На этой странице проверяем введенный код и, если он совпадает, авторизуем пользователя.
function wpskills_otp_form_shortcode() {
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$user_otp = sanitize_text_field($_POST['otp_code']);
if ($user_otp == $_SESSION['wpskills_otp']) {
// Авторизация пользователя по номеру телефона
$phone = $_SESSION['wpskills_phone'];
$user = get_users(array(
'meta_key' => 'billing_phone',
'meta_value' => $phone,
'number' => 1,
'count_total' => false
));
if (!empty($user)) {
wp_set_current_user($user[0]->ID);
wp_set_auth_cookie($user[0]->ID);
wp_redirect(home_url());
exit;
} else {
echo '<p>Пользователь с таким номером не найден.</p>';
}
} else {
echo '<p>Неверный код.</p>';
}
}
return '<form method="post"><label>Введите код из SMS:</label><input type="text" name="otp_code" required><button type="submit">Войти</button></form>';
}
add_shortcode('wpskills_otp_form', 'wpskills_otp_form_shortcode');Особенности и рекомендации по безопасности
При реализации авторизации через телефон важно соблюдать меры безопасности:
- Храните OTP в сессии или базе данных с ограниченным временем жизни (обычно 5-10 минут).
- Используйте защищенное соединение (HTTPS) для всех форм.
- Ограничивайте количество попыток ввода OTP, чтобы избежать перебора.
- Валидация и нормализация номеров телефонов обязательна для корректной работы SMS-сервисов.
Также рассмотрите возможность интеграции с плагинами безопасности, например, Clearfy Pro, для улучшения защиты входа.
Заключение
Авторизация через телефон в WordPress — эффективный способ улучшить UX и безопасность. Вы можете использовать готовые решения, такие как WP SMS Login или MiniOrange OTP Verification, либо реализовать кастомную логику с помощью API SMS-провайдеров и собственного кода.
Если хотите быстро и качественно внедрить такую функцию, также обратите внимание на готовые плагины и темы с поддержкой авторизации по телефону, которые представлены на WPShop.ru.