Я предоставляю своим пользователям возможность зарегистрироваться по номеру телефона, и для проверки я использую 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 или что-то подобное?