IP-paikannuksen toteuttaminen ilmaisen IP2Location LITE: n ja PHP: n avulla
Käy missä tahansa verkkosivustossa ja löydät todennäköisesti jonkinlaisen lokalisoinnin. Yleisin on sinulle paikallisten mainosten näyttäminen, vaikka verkkosivusto saattaa olla ulkomainen. Verkkokävijän IP-osoitteen avulla verkkosivuston ylläpitäjä voi kohdistaa asiaankuuluvia mainoksia, sisältöä tai muuttaa verkkosivuston kieltä maantieteellisen sijaintimaasi perusteella.
Tutkimme, kuinka tämä maantieteellinen sijainti voidaan ottaa käyttöön omalle verkkosivustollesi PHP: n avulla. Osa 1 käsittelee tietokannan ja taulukon luomista sekä tietojen tuomista. Osa 2 näyttää, kuinka PHP: tä käytetään tietokannan kyselyyn ja tulosten noutamiseen.
Osa 1: Paikannustietojen tuominen
Oletetaan, että verkkosivustollasi on Apache-verkkopalvelin, jossa PHP käyttää taustaa. Oletetaan, että käytät MySQL: ää, koska PHP toimii yleensä MySQL: n kanssa.
Ensimmäinen vaihe on ladata DB11 LITE -tietokantatiedosto osoitteesta https://lite.ip2location.com/database/ip-country-region-city-latitude-longitude-zipcode-timezone, joka on ilmainen kirjautumisen jälkeen.
Kun olet ladannut pakatun tiedoston, pura IP2LOCATION-LITE-DB11.CSV-datatiedosto kansioon nimeltä /root/ip2location_data
(tämä on vain esimerkkikansion nimi).
Suorita seuraava luomalla MySQL: ssä tietokanta ja taulukko, johon DB11-tiedot tallennetaan.
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;
Suorita seuraavat tiedot MySQL: ssä tuodaksesi tiedot.
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;
Osa 2: Paikannustietojen kysely PHP-verkkosivultasi
Luomme nyt PHP-verkkosivun kyselemään tietokantaa ja antamaan sivukävijän maantieteelliset sijaintitiedot.
Luo kutsuttu sivu test.php
ja liitä seuraava koodi siihen.
<?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>
Avaa nyt sivu selaimessasi. Sinun pitäisi nähdä kaikki oman IP-osoitteesi sijaintitiedot. Kun näet kaikki IP2Location DB11 LITE -tietojen palauttamat sijaintikentät, voit käyttää niitä monissa tilanteissa. Voit suodattaa liikennettä, estää tai ohjata käyttäjiä heidän sijaintiensa perusteella.
Jos sinulla on lisää kysymyksiä toteutuksesta, löydät lisää opetusohjelmia IP2Location Blogista.