{"id":27906,"date":"2021-05-14T14:55:00","date_gmt":"2021-05-14T11:55:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27906"},"modified":"2021-10-17T04:58:00","modified_gmt":"2021-10-17T01:58:00","slug":"implementering-av-ip-geolokalisering-med-gratis-ip2location-lite-och-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/implementering-av-ip-geolokalisering-med-gratis-ip2location-lite-och-php\/","title":{"rendered":"Implementering av IP-geolokalisering med gratis IP2Location LITE och PHP"},"content":{"rendered":"<p>Bes\u00f6k alla webbplatser och du kommer sannolikt att hitta n\u00e5gon form av lokalisering som anv\u00e4nds. Det vanligaste \u00e4r att visa annonser som \u00e4r lokala f\u00f6r dig \u00e4ven om webbplatsen kan vara utl\u00e4ndsk. Med hj\u00e4lp av webbbes\u00f6karens IP-adress kan webbplatsoperat\u00f6ren rikta in sig p\u00e5 relevanta annonser, inneh\u00e5ll eller \u00e4ndra webbplatsens spr\u00e5k baserat p\u00e5 ditt geolokaliseringsland.<\/p>\n<p>Vi kommer att unders\u00f6ka hur du implementerar denna geolokaliseringsfunktion p\u00e5 din egen webbplats med hj\u00e4lp av PHP. Del 1 handlar om att skapa databasen och tabellen samt importera data. Del 2 visar hur man anv\u00e4nder PHP f\u00f6r att fr\u00e5ga databasen och h\u00e4mta resultaten.<\/p>\n<h3>Del 1: Importera geolokaliseringsdata<\/h3>\n<p>L\u00e5t oss anta att din webbplats k\u00f6r en Apache-webbserver med PHP som driver backend. Vi antar att du anv\u00e4nder MySQL eftersom PHP vanligtvis fungerar med MySQL.<\/p>\n<p>Det f\u00f6rsta steget \u00e4r att ladda ner DB11 LITE-databasfilen fr\u00e5n <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> som \u00e4r gratis efter registrering.<\/p>\n<p>N\u00e4r du har laddat ner den zippade filen extraherar du IP2LOCATION-LITE-DB11.CSV-datafilen till en mapp som heter <code>\/root\/ip2location_data<\/code>(detta \u00e4r bara ett exempel p\u00e5 mappnamn).<\/p>\n<p>K\u00f6r f\u00f6ljande i din MySQL f\u00f6r att skapa databasen och tabellen d\u00e4r vi lagrar DB11-data.<\/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>K\u00f6r nu f\u00f6ljande i MySQL f\u00f6r att importera data.<\/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>Del 2: Fr\u00e5ga geolokaliseringsdata p\u00e5 din PHP-webbsida<\/h3>\n<p>Vi skapar nu PHP-webbsidan f\u00f6r att fr\u00e5ga databasen och mata ut geolokaliseringsdata f\u00f6r sidbes\u00f6karen.<\/p>\n<p>Skapa en sida som heter <code>test.php<\/code>och klistra in f\u00f6ljande kod i den.<\/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>\u00d6ppna nu den sidan i din webbl\u00e4sare. Du b\u00f6r se all geolokaliseringsdata f\u00f6r din egen IP-adress. N\u00e4r du kan se alla geolokaliseringsf\u00e4lt som returneras av IP2Location DB11 LITE-data kan du anv\u00e4nda dem i m\u00e5nga scenarier. Du kan filtrera trafik, blockera eller omdirigera anv\u00e4ndare baserat p\u00e5 deras platser.<\/p>\n<p>Om du har fler fr\u00e5gor om implementeringen kan du hitta fler handledning i <a href=\"https:\/\/blog.ip2location.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">IP2Location Blog<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bes\u00f6k alla webbplatser och du kommer sannolikt att hitta n\u00e5gon form av lokalisering som anv\u00e4nds. Det vanligaste \u00e4r att visa annonser som \u00e4r lokala f\u00f6r dig &#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":[279],"tags":[850],"class_list":["post-27906","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/27906","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/comments?post=27906"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/27906\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/20619"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=27906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=27906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=27906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}