Визначення країни по ip-адресою через бд

Визначення країни по IP-адресою через БД

Відео: Як Знайти Людини За Номеру Телефону | обчислення Місцезнаходження

Пару місяців назад я писав статтю про те, як дізнатися країну користувача по його IP-адресою. І ще в тій статті я вказав основні мінуси підходу, який там використовувався. Якщо раптом, хто забув або не дивився, то нагадаю. Там ми дізнавалися країну через сторонній сервіс. Однак, як Ви розумієте, тут є два великих мінуса: залежність від роботи стороннього сервера (може бути, він зникне або просто відключиться), а також постійна зміна алгоритму парсинга при зміні верстки стороннього сервісу. Як Ви розумієте, другий мінус - дуже істотний. Так як Ви ніколи заздалегідь не знаєте, коли зламається Ваш скрипт. Ось з цих двох причин дуже часто країну користувача визначають по IP-адресою через власну базу даних. Ось про цей спосіб ми і поговоримо в цій статті.

Не буду довго тягнути і відразу приступлю до докладного опису того, що Вам необхідно зробити:

  1. Скачайте архів c файлом, що містить SQL-запит, за цим посиланням: завантажити відповідності IP-адрес і країн.
  2. зайдіть в PHPMyAdmin.
  3. Створіть базу даних.
  4. Імпорт SQL-файл в створену базу даних. Зверніть увагу: SQL-файл чималий, тому цілком ймовірно Вам доведеться змінити файл налаштувань інтерпрітатора PHP. Зокрема, збільшити значення наступних змінних (вони всі повинні бути більше розміру SQL-файлу): "memory_limit","post_max_size","upload_max_filesize".



Так як база досить велика (більше 100 000 записів), то в SQL-файл я вирішив додати індекс для двох полів. Це значно увеличелось продуктивність. Вам нічого вже робити не треба, але щоб Ви розуміли в майбутньому, що якщо раптом з базою даних відбуваються великі гальма, то подумайте про додавання індексу на деякі поля.

А тепер наводжу PHP-код, який дозволить дізнатися країну відвідувача по його IP-адресою через базу даних:

lt ;?php
$ address
="Localhost"-// Адреса бази даних
$ user
="Root"-// Ім`я користувача бази даних
$ password
=""-// Пароль користувача
$ name_db
="Mydb"-// Ім`я бази даних
// Підключаємося до бази даних
$ db
=new mysqli($ address, $ user, $ password, $ name_db) -
if(mysqli_connect_errno()){
echo
"Помилка підключення"-
exit() -
}
$ ip
="112.91.31.28"-// IP-адреса для перевірки
// Перетворимо IP-адреса в потрібний нам формат
$ ip
= sprintf("% U", ip2long($ ip)) -
// Робимо вибірку
$ result_set
= $ db-gt;query("SELECT` full_name` FROM `` WHERE ".$ ip."Gt; =` ip_from` AND ".$ ip."Lt; =` ip_to` ") -
// Отримуємо результат вибірки
$ row
= $ result_set-gt;fetch_assoc() -
// Виводимо результат
echo
"Країна ;".$ row["Full_name"] -
?gt;



Тут все досить докладно прокоментовано, тому проблем з розумінням коду не повинно виникнути. Однак, хочеться зупинитися на описі двох функцій:

  • ip2long ($ ip) - функція, яка перетворює звичний нам IP-адреса (Тобто з точками) в мережеву адресу.
  • sprintf (string $ format, mixed $ string) - функція, яка перетворює задану рядок string до певного формату format. рядок "format"Складається з ряду специфікацій конвертації. Не буду зараз докладно це розбирати, так як на це буде потрібно окрема стаття, але в даному прикладі ми повідомляємо, що наша рядок - це десятиричное беззнаковое число цілого типу (% u).

Якщо Ви все зробили правильно, то підставляючи в змінну ip який-небудь IP-адреса, Ви будете дізнаватися, якій країні він належить. Все б було чудово, проте, у цього способу також є один істотний недолік: не дивлячись на великий розмір таблиці, вона не є повною, більш того, абсолютно невідомо, що буде в майбутньому, і вона може стати просто некоректною. І тому її треба час від часу оновлювати. Оновлені версії можна пошукати в Інтернеті.

Відео: Як дізнатися / визначити провайдера по IP адресою

Тепер Ви знаєте всі доступні способи для того, щоб дізнатися країну користувача по IP-адресою. Яким способом користуватися - вирішувати тільки Вам, а своє завдання я виконав.

Поділися в соціальних мережах:

Схожі
Різниця між cookie і сесіямиРізниця між cookie і сесіями
Красиві модальні вікна на jаvascript.Красиві модальні вікна на jаvascript.
Як зробити моніторинг сервераЯк зробити моніторинг сервера
Як дізнатися http-заголовки сервера через curlЯк дізнатися http-заголовки сервера через curl
Навіщо потрібен виділений ip-адреса на хостингуНавіщо потрібен виділений ip-адреса на хостингу
Парсинг xml-документа на phpПарсинг xml-документа на php
Як дізнатися реальний ip-адреса відвідувачаЯк дізнатися реальний ip-адреса відвідувача
Як дізнатися ip-адреса відвідувача через phpЯк дізнатися ip-адреса відвідувача через php
Як дізнатися країну по ip-адресою через phpЯк дізнатися країну по ip-адресою через php
Як поміняти ip адреса комп`ютера?Як поміняти ip адреса комп`ютера?
» » Визначення країни по ip-адресою через бд