{"id":24206,"date":"2021-05-14T14:39:00","date_gmt":"2021-05-14T11:39:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24206"},"modified":"2021-10-17T20:59:46","modified_gmt":"2021-10-17T17:59:46","slug":"ip-paikannuksen-toteuttaminen-ilmaisen-ip2location-lite-n-ja-php-n-avulla","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/ip-paikannuksen-toteuttaminen-ilmaisen-ip2location-lite-n-ja-php-n-avulla\/","title":{"rendered":"IP-paikannuksen toteuttaminen ilmaisen IP2Location LITE: n ja PHP: n avulla"},"content":{"rendered":"<p>K\u00e4y miss\u00e4 tahansa verkkosivustossa ja l\u00f6yd\u00e4t todenn\u00e4k\u00f6isesti jonkinlaisen lokalisoinnin. Yleisin on sinulle paikallisten mainosten n\u00e4ytt\u00e4minen, vaikka verkkosivusto saattaa olla ulkomainen. Verkkok\u00e4vij\u00e4n IP-osoitteen avulla verkkosivuston yll\u00e4pit\u00e4j\u00e4 voi kohdistaa asiaankuuluvia mainoksia, sis\u00e4lt\u00f6\u00e4 tai muuttaa verkkosivuston kielt\u00e4 maantieteellisen sijaintimaasi perusteella.<\/p>\n<p>Tutkimme, kuinka t\u00e4m\u00e4 maantieteellinen sijainti voidaan ottaa k\u00e4ytt\u00f6\u00f6n omalle verkkosivustollesi PHP: n avulla. Osa 1 k\u00e4sittelee tietokannan ja taulukon luomista sek\u00e4 tietojen tuomista. Osa 2 n\u00e4ytt\u00e4\u00e4, kuinka PHP: t\u00e4 k\u00e4ytet\u00e4\u00e4n tietokannan kyselyyn ja tulosten noutamiseen.<\/p>\n<h3>Osa 1: Paikannustietojen tuominen<\/h3>\n<p>Oletetaan, ett\u00e4 verkkosivustollasi on Apache-verkkopalvelin, jossa PHP k\u00e4ytt\u00e4\u00e4 taustaa. Oletetaan, ett\u00e4 k\u00e4yt\u00e4t MySQL: \u00e4\u00e4, koska PHP toimii yleens\u00e4 MySQL: n kanssa.<\/p>\n<p>Ensimm\u00e4inen vaihe on ladata DB11 LITE -tietokantatiedosto osoitteesta <a href=\"https:\/\/lite.ip2location.com\/database\/ip-country-region-city-latitude-longitude-zipcode-timezone\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a><a href=\"https:\/\/lite.ip2location.com\/database\/ip-country-region-city-latitude-longitude-zipcode-timezone\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/lite.ip2location.com\/database\/ip-country-region-city-latitude-longitude-zipcode-timezone,<\/a> joka on ilmainen kirjautumisen j\u00e4lkeen.<\/p>\n<p>Kun olet ladannut pakatun tiedoston, pura IP2LOCATION-LITE-DB11.CSV-datatiedosto kansioon nimelt\u00e4 <code>\/root\/ip2location_data<\/code>(t\u00e4m\u00e4 on vain esimerkkikansion nimi).<\/p>\n<p>Suorita seuraava luomalla MySQL: ss\u00e4 tietokanta ja taulukko, johon DB11-tiedot tallennetaan.<\/p>\n<pre><code>CREATE DATABASE ip2location;\nUSE ip2location;\nCREATE TABLE `ip2location_db11`(\n\u00a0\u00a0\u00a0\u00a0`ip_from` INT(10) UNSIGNED,\n\u00a0\u00a0\u00a0\u00a0`ip_to` INT(10) UNSIGNED,\n\u00a0\u00a0\u00a0\u00a0`country_code` CHAR(2),\n\u00a0\u00a0\u00a0\u00a0`country_name` VARCHAR(64),\n\u00a0\u00a0\u00a0\u00a0`region_name` VARCHAR(128),\n\u00a0\u00a0\u00a0\u00a0`city_name` VARCHAR(128),\n\u00a0\u00a0\u00a0\u00a0`latitude` DOUBLE,\n\u00a0\u00a0\u00a0\u00a0`longitude` DOUBLE,\n\u00a0\u00a0\u00a0\u00a0`zip_code` VARCHAR(30),\n\u00a0\u00a0\u00a0\u00a0`time_zone` VARCHAR(8),\n\u00a0\u00a0\u00a0\u00a0INDEX `idx_ip_to` (`ip_to`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;<\/code><\/pre>\n<p>Suorita seuraavat tiedot MySQL: ss\u00e4 tuodaksesi tiedot.<\/p>\n<pre><code>LOAD DATA LOCAL\n\u00a0\u00a0\u00a0\u00a0INFILE '\/root\/ip2location_data\/IP2LOCATION-LITE-DB11.CSV'\nINTO TABLE\n\u00a0\u00a0\u00a0\u00a0`ip2location_db11`\nFIELDS TERMINATED BY ','\nENCLOSED BY '\"'\nLINES TERMINATED BY 'rn'\nIGNORE 0 LINES;<\/code><\/pre>\n<h3>Osa 2: Paikannustietojen kysely PHP-verkkosivultasi<\/h3>\n<p>Luomme nyt PHP-verkkosivun kyselem\u00e4\u00e4n tietokantaa ja antamaan sivuk\u00e4vij\u00e4n maantieteelliset sijaintitiedot.<\/p>\n<p>Luo kutsuttu sivu <code>test.php<\/code>ja liit\u00e4 seuraava koodi siihen.<\/p>\n<pre><code>&lt;?php\n$dbname = 'ip2location'; \/\/ database name\n$dbhost = 'localhost'; \/\/ database server name\n$dbuser = 'root'; \/\/ database user login\n$dbpass = '12345'; \/\/ database user password\n?&gt;\n&lt;!DOCTYPE html&gt;\n&lt;head&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;title&gt;Test page&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;?php\ntry {\n\u00a0\u00a0\u00a0\u00a0$pdo = new PDO('mysql:host='. $dbhost. ';dbname='. $dbname. ';charset=utf8', $dbuser, $dbpass);\n\u00a0\u00a0\u00a0\u00a0$pdo-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$ip = $_SERVER['REMOTE_ADDR']; \/\/ web visitor's IP address\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$st = $pdo-&gt;prepare('select * from `ip2location_db11` where inet_aton(:ip) &lt;= ip_to limit 1');\n\u00a0\u00a0\u00a0\u00a0$st-&gt;bindParam(':ip', $ip, PDO::PARAM_STR);\n\u00a0\u00a0\u00a0\u00a0$st-&gt;execute();\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$data = $st-&gt;fetchAll(PDO::FETCH_ASSOC);\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0if ($st-&gt;rowCount() &gt; 0) {\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'country_code: '. $data[0]['country_code']. \"&lt;br \/&gt;n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'country_name: '. $data[0]['country_name']. \"&lt;br \/&gt;n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'region_name: '. $data[0]['region_name']. \"&lt;br \/&gt;n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'city_name: '. $data[0]['city_name']. \"&lt;br \/&gt;n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'latitude: '. $data[0]['latitude']. \"&lt;br \/&gt;n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'longitude: '. $data[0]['longitude']. \"&lt;br \/&gt;n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'zip_code: '. $data[0]['zip_code']. \"&lt;br \/&gt;n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'time_zone: '. $data[0]['time_zone']. \"&lt;br \/&gt;n\";\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0else {\n\u00a0\u00a0\u00a0\u00a0\u00a0echo 'No data found.&lt;br \/&gt;'. \"n\";\n\u00a0\u00a0\u00a0\u00a0}\n}\ncatch(PDOException $e) {\n\u00a0\u00a0\u00a0\u00a0echo 'An error has occurred.&lt;br \/&gt;'. \"n\";\n}\n?&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Avaa nyt sivu selaimessasi. Sinun pit\u00e4isi n\u00e4hd\u00e4 kaikki oman IP-osoitteesi sijaintitiedot. Kun n\u00e4et kaikki IP2Location DB11 LITE -tietojen palauttamat sijaintikent\u00e4t, voit k\u00e4ytt\u00e4\u00e4 niit\u00e4 monissa tilanteissa. Voit suodattaa liikennett\u00e4, est\u00e4\u00e4 tai ohjata k\u00e4ytt\u00e4ji\u00e4 heid\u00e4n sijaintiensa perusteella.<\/p>\n<p>Jos sinulla on lis\u00e4\u00e4 kysymyksi\u00e4 toteutuksesta, l\u00f6yd\u00e4t lis\u00e4\u00e4 opetusohjelmia <a href=\"https:\/\/blog.ip2location.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">IP2Location Blogista<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>K\u00e4y miss\u00e4 tahansa verkkosivustossa ja l\u00f6yd\u00e4t todenn\u00e4k\u00f6isesti jonkinlaisen lokalisoinnin. Yleisin on sinulle paikallisten mainosten n\u00e4ytt\u00e4minen &#8230;<\/p>\n","protected":false},"author":1,"featured_media":20619,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[275],"tags":[843],"class_list":["post-24206","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-6","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=24206"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24206\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/20619"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=24206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=24206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=24206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}