Визначення країни по ip-адресою через бд
Відео: Як Знайти Людини За Номеру Телефону | обчислення Місцезнаходження
Пару місяців назад я писав статтю про те, як дізнатися країну користувача по його IP-адресою. І ще в тій статті я вказав основні мінуси підходу, який там використовувався. Якщо раптом, хто забув або не дивився, то нагадаю. Там ми дізнавалися країну через сторонній сервіс. Однак, як Ви розумієте, тут є два великих мінуса: залежність від роботи стороннього сервера (може бути, він зникне або просто відключиться), а також постійна зміна алгоритму парсинга при зміні верстки стороннього сервісу. Як Ви розумієте, другий мінус - дуже істотний. Так як Ви ніколи заздалегідь не знаєте, коли зламається Ваш скрипт. Ось з цих двох причин дуже часто країну користувача визначають по IP-адресою через власну базу даних. Ось про цей спосіб ми і поговоримо в цій статті.
Не буду довго тягнути і відразу приступлю до докладного опису того, що Вам необхідно зробити:
- Скачайте архів c файлом, що містить SQL-запит, за цим посиланням: завантажити відповідності IP-адрес і країн.
- зайдіть в PHPMyAdmin.
- Створіть базу даних.
- Імпорт 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-адресою. Яким способом користуватися - вирішувати тільки Вам, а своє завдання я виконав.
- Сокети: сервер на php
- Як дізнатися http-заголовки сервера через curl
- Як зробити моніторинг сервера
- Як дізнатися країну по ip-адресою через php
- Як захиститися від ddos-атак
- Як визначити часовий пояс
- Як поміняти ip адреса комп`ютера?
- Як дізнатися ip-адреса відвідувача через php
- Навіщо потрібен виділений ip-адреса на хостингу
- Як дізнатися синтаксис sql-запиту через phpmyadmin
- Як дізнатися реальний ip-адреса відвідувача
- Як дізнатися ip адресу linux
- Купівля хостингу
- Динамічне підвантаження даних для select
- Журнал системного адміністратора
- Конвертація csv в sql
- Відправка sms на сайті
- Перевірка швидкості інтернету linux
- Різниця між cookie і сесіями
- Парсинг xml-документа на php
- Красиві модальні вікна на jаvascript.