IP-geolokatsiooni rakendamine tasuta IP2Location LITE ja PHP abil
Külastage mõnda veebisaiti ja leiate, et tõenäoliselt kasutatakse mõnda lokaliseerimisvormi. Kõige tavalisem on teile kohalike reklaamide kuvamine, kuigi veebisait võib olla võõras. Veebikülastaja IP-aadressi abil saab veebisaidi operaator sihtida asjakohaseid reklaame, sisu või muuta veebisaidi keelt teie geograafilise asukoha riigi järgi.
Uurime, kuidas seda geograafilise asukoha funktsiooni oma veebisaidile PHP abil juurutada. 1 osas käsitletakse nii andmebaasi ja tabeli loomist kui ka andmete importimist. 2 osa näitab, kuidas kasutada PHP-d andmebaasi päringute tegemiseks ja tulemuste hankimiseks.
1 osa: geolokatsiooniandmete importimine
Oletame, et teie veebisaidil töötab Apache veebiserver, kus PHP toetab taustaprogrammi. Eeldame, et kasutate MySQL-i, kuna PHP töötab tavaliselt MySQL-iga.
Esimene samm on andmebaasi DB11 LITE faili allalaadimine https://lite.ip2location.com/database/ip-country-region-city-latitude-longitude-zipcode-timezone, mis on pärast registreerumist tasuta.
Kui olete ZIP-faili alla laadinud, eraldage andmefail IP2LOCATION-LITE-DB11.CSV kausta nimega /root/ip2location_data
(see on ainult kausta nime näide).
Käivitage oma MySQL-is andmebaasi ja tabeli loomiseks DB11 andmete salvestamine järgmiselt.
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;
Andmete importimiseks käivitage nüüd MySQL-is järgmine.
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 osa: geograafilise asukoha andmete küsimine teie PHP veebisaidil
Loome nüüd andmebaasi päringute tegemiseks ja lehekülastaja geograafilise asukoha andmete väljastamiseks PHP veebilehe.
Looge nimega leht test.php
ja kleepige sinna järgmine kood.
<?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>
Nüüd avage see leht oma brauseris. Peaksite nägema kõiki oma IP-aadressi geograafilise asukoha andmeid. Kui näete kõiki IP2Location DB11 LITE andmete tagastatud geolokatsioonivälju, saate neid kasutada paljudes stsenaariumides. Saate liiklust filtreerida, kasutajaid nende asukohtade järgi blokeerida või ümber suunata.
Kui teil on rakendamise kohta rohkem küsimusi, leiate rohkem õpetusi IP2Location Blogist.