WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Реализация геолокации IP с использованием Free IP2Location LITE и PHP

279

Посетите любой веб-сайт, и вы, скорее всего, обнаружите, что используется какая-либо форма локализации. Самым распространенным является показ рекламы для вас, даже если веб-сайт может быть иностранным. Используя IP-адрес веб-посетителя, оператор веб-сайта может настроить таргетинг на релевантную рекламу, содержание или изменить язык веб-сайта в зависимости от страны вашего геолокации.

Мы рассмотрим, как реализовать эту функцию геолокации на вашем собственном веб-сайте с помощью PHP. Часть 1 посвящена созданию базы данных и таблицы, а также импорту данных. Часть 2 покажет, как использовать PHP для запроса к базе данных и получения результатов.

Часть 1: Импорт данных геолокации

Предположим, что на вашем веб-сайте работает веб-сервер Apache, на котором работает PHP. Мы предполагаем, что вы используете MySQL, поскольку PHP обычно работает с MySQL.

Первый шаг – загрузить файл базы данных DB11 LITE из https://lite.ip2location.com/database/ip-country-region-city-latitude-longitude-zipcode-timezone, который бесплатен после регистрации.

После загрузки заархивированного файла извлеките файл данных IP2LOCATION-LITE-DB11.CSV в папку с именем /root/ip2location_data(это просто пример имени папки).

В MySQL запустите следующее, чтобы создать базу данных и таблицу, в которой мы будем хранить данные DB11.

CREATE DATABASE ip2location;
USE ip2location;
CREATE TABLE `ip2location_db11`(
    `ip_from` INT(10) UNSIGNED,
    `ip_to` INT(10) UNSIGNED,
    `country_code` CHAR(2),
    `country_name` VARCHAR(64),
    `region_name` VARCHAR(128),
    `city_name` VARCHAR(128),
    `latitude` DOUBLE,
    `longitude` DOUBLE,
    `zip_code` VARCHAR(30),
    `time_zone` VARCHAR(8),
    INDEX `idx_ip_to` (`ip_to`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Теперь запустите в MySQL следующее, чтобы импортировать данные.

LOAD DATA LOCAL
    INFILE '/root/ip2location_data/IP2LOCATION-LITE-DB11.CSV'
INTO TABLE
    `ip2location_db11`
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY 'rn'
IGNORE 0 LINES;

Часть 2: Запрос данных геолокации на вашей веб-странице PHP

Теперь мы создадим веб-страницу PHP для запроса базы данных и вывода данных геолокации для посетителя страницы.

Создайте страницу с именем test.phpи вставьте в нее следующий код.

<?php
$dbname = 'ip2location'; // database name
$dbhost = 'localhost'; // database server name
$dbuser = 'root'; // database user login
$dbpass = '12345'; // database user password
?>
<!DOCTYPE html>
<head>
    <title>Test page</title>
</head>
<body>
<?php
try {
    $pdo = new PDO('mysql:host='. $dbhost. ';dbname='. $dbname. ';charset=utf8', $dbuser, $dbpass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
    $ip = $_SERVER['REMOTE_ADDR']; // web visitor's IP address
     
    $st = $pdo->prepare('select * from `ip2location_db11` where inet_aton(:ip) <= ip_to limit 1');
    $st->bindParam(':ip', $ip, PDO::PARAM_STR);
    $st->execute();
     
    $data = $st->fetchAll(PDO::FETCH_ASSOC);
     
    if ($st->rowCount() > 0) {
     echo 'country_code: '. $data[0]['country_code']. "<br />n";
     echo 'country_name: '. $data[0]['country_name']. "<br />n";
     echo 'region_name: '. $data[0]['region_name']. "<br />n";
     echo 'city_name: '. $data[0]['city_name']. "<br />n";
     echo 'latitude: '. $data[0]['latitude']. "<br />n";
     echo 'longitude: '. $data[0]['longitude']. "<br />n";
     echo 'zip_code: '. $data[0]['zip_code']. "<br />n";
     echo 'time_zone: '. $data[0]['time_zone']. "<br />n";
    }
    else {
     echo 'No data found.<br />'. "n";
    }
}
catch(PDOException $e) {
    echo 'An error has occurred.<br />'. "n";
}
?>
</body>
</html>

Теперь откройте эту страницу в своем браузере. Вы должны увидеть все данные геолокации для своего собственного IP-адреса. Как только вы увидите все поля геолокации, возвращаемые данными IP2Location DB11 LITE, вы сможете использовать их во многих сценариях. Вы можете фильтровать трафик, блокировать или перенаправлять пользователей в зависимости от их местоположения.

Если у вас есть дополнительные вопросы о реализации, вы можете найти больше руководств в блоге IP2Location.

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее