VerifyPhoneCode
int|false public static CUser::VerifyPhoneCode( string $phoneNumber, string $code );
Метод проверяет одноразовый код подтверждения телефона и возвращает идентификатор пользователя при успешной проверке. Метод статический.
CUser::VerifyPhoneCode нормализует номер телефона, ищет запись в таблице b_user_phone_auth и проверяет код по секрету OTP_SECRET.
Параметры вызова
| Параметр | Описание |
|---|---|
| $phoneNumber | Номер телефона пользователя. Перед проверкой метод приводит номер к формату E.164. |
| $code | Одноразовый код подтверждения. |
Возвращаемое значение
Метод возвращает идентификатор пользователя USER_ID, если код прошел проверку.
Метод возвращает false, если код пустой, телефон не найден, в записи телефона нет OTP_SECRET, код неверный, формат кода не прошел проверку или для записи уже накоплено три неудачные попытки.
Особенности работы
Если код неверный, метод увеличивает счетчик ATTEMPTS на 1. Когда значение ATTEMPTS достигает 3, дальнейшая проверка возвращает false.
Если код верный, метод устанавливает CONFIRMED в Y, если телефон еще не был подтвержден, и очищает поле DATE_SENT.
Пример
$phoneNumber = '+79990000000';
$code = $_POST['SMS_CODE'];
$userId = CUser::VerifyPhoneCode($phoneNumber, $code);
if ($userId !== false)
{
echo 'Телефон подтвержден для пользователя ' . $userId;
}