Как верифицировать номер пользователя: SMS или код на PHP
Рассказали, как верифицировать номер телефона пользователя через SMS с помощью кода на PHP и готовых решений.
2К открытий5К показов
Предположим, возникла задача проверять номера пользователей. Нужно отправлять случайно сгенерированные SMS-коды, чтобы верифицировать их номера телефонов. С чего начать?
Алгоритм такой:
- Пользователь вводит номер телефона.
- Высылаете SMS-код.
- Пользователь вводит этот код.
- Если код верный, пользователь проходит дальше.
Какие вопросы могут возникнуть:
- Как случайно генерировать код.
- Какой выбрать сервис SMS-рассылок с API.
Вопрос распадается на несколько кусочков. Начнём с самого простого – случайной генерации кода. На PHP это можно сделать, используя функции для работы с случайными числами и строками, например, rand()
.
Если работаете с PHP 7, то берете более криптографически безопасную функцию random_int()
. Для случайного цифрового кода можно сделать так:
Если предпочитаете вариант посложнее, то есть алфавитно-цифровой код, то понадобится random_bytes()
или более старый вариант mt_rand()
. В этом случае код будет таким:
После генерации кода сохраняем его в базе данных или временно в сеансе пользователя, чтобы позже сравнить с введенным пользователем кодом при авторизации.
Далее сгенерированный код вам надо автоматически отправить пользователю. Если выбрали SMS-провайдера, то многое зависит от его условий. Можно обратиться к МТС Exolve. Вот универсальный вариант кода на PHP для отправки SMS с помощью HTTP-запроса к любому SMS-провайдеру:
Надо только заменить <YOUR_API_ENDPOINT>
, <YOUR_API_KEY>
, <SENDER_NUMBER>
и другие параметры на соответствующие значения, предоставленные вашим SMS-провайдером.
И немного про варианты без SMS:
- Электронная почта. Вместо SMS-кода отправляем пользователю электронное письмо с проверочной ссылкой или временным кодом для подтверждения их идентификации.
- Парольная авторизация — стандартный метод входа на сайт с использованием пароля.
- Двухфакторная аутентификация (2FA), то есть работаем с приложениями для генерации базе одноразовых временных кодов (например, Google Authenticator или Authy).
- Социальная авторизация через аккаунты в социальных сетях (например, VK, Google, Twitter).
- Протокол аутентификации и авторизации OpenID Connect, чтобы пользователи могли использовать свои учетки с других веб-сервисов.
- Дать пользователям доступ к вашему сайту через сторонние приложения с помощью протокола OAuth.
2К открытий5К показов