Лучший подход для кода страны для регистрации и входа - PullRequest
0 голосов
/ 17 апреля 2020

Я предоставляю своим пользователям возможность зарегистрироваться по номеру телефона, и для проверки я использую libphonenumber с https://github.com/giggsey/libphonenumber-for-php. Я успешно реализовал это следующим образом

try 
{
    $phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();
    $numberProto = $phoneUtil->parse($phoneNumber, 'US'); //<-Getting Country Code from GeoIPLite Database
    if($phoneUtil->isValidNumber($numberProto) && $phoneUtil->getNumberType($numberProto) == 1)
    {
         return $phoneUtil->format($numberProto,libphonenumber\PhoneNumberFormat::E164);
    }
    else
    {
         return false;
    }
} 
catch(\libphonenumber\NumberParseException $e) 
{
    error_log($e);
    return false;
}

Теперь я боюсь, что если пользователь зарегистрируется, когда он находится в США, а затем когда-нибудь он отправится в Великобританию и попытается войти оттуда, это не будет зарегистрированный номер в базе данных, потому что его код страны был сохранен как США. Итак, мои вопросы:

1) Какой формат телефонного номера пользователя я должен хранить в базе данных либо полный номер с кодом страны, либо просто номер телефона?

2) Если я сохраню только номер телефона без кода страны существует вероятность, что 2 числа 2 разных пользователей из разных стран могут конфликтовать

3) Какой метод следует использовать для проверки номера телефона при входе в систему? Или мы должны проверить номер телефона + код страны (полученный с помощью GeoIP) или просто номер телефона? Что происходит, если пользователь сейчас находится в другой стране? Какой возможный метод Facebook может использовать?

4) Есть ли возможность получить код страны с номера телефона, предоставленного в местном формате? говорите без кода страны? Или мы должны получить код страны из базы данных GeoIP или что-то подобное?

...