{"id":29820,"date":"2021-06-22T18:26:00","date_gmt":"2021-06-22T15:26:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29820"},"modified":"2021-10-17T04:12:36","modified_gmt":"2021-10-17T01:12:36","slug":"hitta-geolocation-med-ip-adress-gratis-i-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/hitta-geolocation-med-ip-adress-gratis-i-php\/","title":{"rendered":"Hitta Geolocation med IP-adress gratis i PHP"},"content":{"rendered":"<p>Att hitta geolokalisering och landinformation f\u00f6r en anv\u00e4ndare \u00e4r n\u00f6dv\u00e4ndig f\u00f6r de flesta webbplatser. F\u00f6rmodligen m\u00e5ste du visa olika inneh\u00e5ll baserat p\u00e5 en anv\u00e4ndares land, visa olika priser enligt landets valutakoder etc. I dessa scenarier m\u00e5ste du hitta en anv\u00e4ndares geografiska placering och betj\u00e4na inneh\u00e5ll d\u00e4refter.<\/p>\n<p>I den h\u00e4r artikeln visar jag dig hur du hittar Geolocation med IP-adressen f\u00f6r en anv\u00e4ndare i PHP. Vi kommer att anv\u00e4nda <a href=\"https:\/\/ipgeolocationapi.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">IP Geolocation API-tj\u00e4nsten<\/a> som \u00e4r helt gratis.<\/p>\n<h3>F\u00e5 Geolocation med IP-adress<\/h3>\n<p>I PHP kan vi anv\u00e4nda tj\u00e4nsten &quot;IP Geolocation API&quot; via cURL och Guzzle. B\u00e5da \u00e4r popul\u00e4ra att ringa externa API-tj\u00e4nster och f\u00e5 svaret ur det. Beroende p\u00e5 ditt projekts fl\u00f6de kan du anv\u00e4nda antingen cURL eller Guzzle. I b\u00e5da fallen m\u00e5ste vi f\u00f6rst f\u00e5 anv\u00e4ndarens IP-adress. S\u00e5 skriv nedanst\u00e5ende metod som returnerar en IP-adress.<\/p>\n<pre><code>&lt;?php\n\/\/ get user's IP address\nfunction getUserIpAddr() {\n\u00a0\u00a0\u00a0\u00a0if (!empty($_SERVER['HTTP_CLIENT_IP'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$ip = $_SERVER['HTTP_CLIENT_IP'];\n\u00a0\u00a0\u00a0\u00a0} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];\n\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$ip = $_SERVER['REMOTE_ADDR'];\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0return $ip;\n}<\/code><\/pre>\n<h4>Anv\u00e4nda cURL<\/h4>\n<p>CURL kommer som standard med PHP-installationen. Inget behov av att installera n\u00e5got paket separat. Du beh\u00f6ver bara se till att den \u00e4r aktiverad p\u00e5 din server innan du anv\u00e4nder den.<\/p>\n<p>Genom cURL ringer vi till slutpunkten f\u00f6r &quot;IP Geolocation API&quot; som ger anv\u00e4ndarens IP-adress och skriver ut svaret.<\/p>\n<pre><code>&lt;?php\n$ip_address = getUserIpAddr();\n\u00a0\u00a0\n$url = \"https:\/\/api.ipgeolocationapi.com\/geolocate\/$ip_address\";\n$ch = curl_init();\u00a0 \ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\ncurl_setopt($ch, CURLOPT_URL, $url);\n$response = curl_exec($ch);\n$arr_result = json_decode($response);\nprint_r($arr_result);<\/code><\/pre>\n<p>Du f\u00e5r utdata i JSON-format ungef\u00e4r som nedan.<\/p>\n<pre><code>{\n   \"continent\": \"Asia\",\n   \"address_format\": \"{{recipient}}n{{street}}n{{region}}n{{city}} {{postalcode}}n{{country}}\",\n   \"alpha2\": \"IN\",\n   \"alpha3\": \"IND\",\n   \"country_code\": \"91\",\n   \"international_prefix\": \"00\",\n   \"ioc\": \"IND\",\n   \"gec\": \"IN\",\n   \"name\": \"India\",\n   \"national_destination_code_lengths\": [\n     2\n   ],\n   \"national_number_lengths\": [\n     10\n   ],\n   \"national_prefix\": \"0\",\n   \"number\": \"356\",\n   \"region\": \"Asia\",\n   \"subregion\": \"Southern Asia\",\n   \"world_region\": \"APAC\",\n   \"un_locode\": \"IN\",\n   \"nationality\": \"Indian\",\n   \"postal_code\": true,\n   \"unofficial_names\": [\n     \"India\",\n     \"Indien\",\n     \"Inde\",\n     \"\u30a4\u30f3\u30c9\"\n   ],\n   \"languages_official\": [\n     \"hi\",\n     \"en\"\n   ],\n   \"languages_spoken\": [\n     \"hi\",\n     \"en\"\n   ],\n   \"geo\": {\n     \"latitude\": 20.593684,\n     \"latitude_dec\": \"23.4060115814209\",\n     \"longitude\": 78.96288,\n     \"longitude_dec\": \"79.45809173583984\",\n     \"max_latitude\": 35.5087008,\n     \"max_longitude\": 97.3953587,\n     \"min_latitude\": 6.4626999,\n     \"min_longitude\": 68.1097,\n     \"bounds\": {\n       \"northeast\": {\n         \"lat\": 35.5087008,\n         \"lng\": 97.3953587\n       },\n       \"southwest\": {\n         \"lat\": 6.4626999,\n         \"lng\": 68.1097\n       }\n     }\n   },\n   \"currency_code\": \"INR\",\n   \"start_of_week\": \"monday\"\n }<\/code><\/pre>\n<h4>Anv\u00e4nda Guzzle<\/h4>\n<p><a href=\"https:\/\/docs.guzzlephp.org\/en\/latest\/overview.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Guzzle<\/a> \u00e4r en PHP HTTP-klient f\u00f6r att skicka HTTP-f\u00f6rfr\u00e5gningar. Det \u00e4r ett alternativ till CURL. Det ger mycket ren kod och en b\u00e4ttre upplevelse f\u00f6r utvecklare.<\/p>\n<p>F\u00f6rst m\u00e5ste du installera Guzzle med Composer genom att k\u00f6ra kommandot:<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<p>Skriv sedan koden nedan som anropar API: et via Guzzle.<\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\u00a0\nuse GuzzleHttpClient;\n\u00a0\u00a0\n$ip_address = getUserIpAddr();\n\u00a0\u00a0\n$client = new Client();\n\u00a0\u00a0\n$response = $client-&gt;request('GET', 'https:\/\/api.ipgeolocationapi.com\/geolocate\/'.$ip_address);\n\u00a0\u00a0\nif($response-&gt;getStatusCode() == 200) {\n\u00a0\u00a0\u00a0\u00a0$body = $response-&gt;getBody();\n\u00a0\u00a0\u00a0\u00a0$arr_body = json_decode($body);\n\u00a0\u00a0\u00a0\u00a0print_r($arr_body);\n}<\/code><\/pre>\n<p>S\u00e5 h\u00e4r f\u00e5r vi Geolocation med IP-adressen i PHP. Dela dina tankar eller f\u00f6rslag i kommentarf\u00e4ltet nedan.<\/p>\n<h4>relaterade artiklar<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/laravel-geoip-bibliotek-ta-reda-pa-geolokalisering-med-ip-adress\/\" title=\"Laravel Geoip Library - Ta reda p\u00e5 geolokalisering med IP-adress\">Laravel Geoip Library &#8211; Ta reda p\u00e5 geolokalisering med IP-adress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-far-jag-geolocation-fran-ip-i-php\/\" title=\"Hur f\u00e5r jag Geolocation fr\u00e5n IP i PHP\">Hur f\u00e5r jag Geolocation fr\u00e5n IP i PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-anvander-guzzle-en-php-http-klient-for-att-skicka-http-forfragningar\/\" title=\"Hur man anv\u00e4nder Guzzle - En PHP HTTP-klient f\u00f6r att skicka HTTP-f\u00f6rfr\u00e5gningar\">Hur man anv\u00e4nder Guzzle &#8211; En PHP HTTP-klient f\u00f6r att skicka HTTP-f\u00f6rfr\u00e5gningar<\/a><\/li>\n<\/ul>\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>Ibland m\u00e5ste vi hitta Geolocation f\u00f6r en anv\u00e4ndare f\u00f6r att betj\u00e4na olika inneh\u00e5ll baserat p\u00e5 land. I den h\u00e4r artikeln visar vi dig hur du f\u00e5r<\/p>\n","protected":false},"author":1,"featured_media":21605,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[279],"tags":[850],"class_list":["post-29820","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\/29820","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=29820"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/29820\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/21605"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=29820"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=29820"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=29820"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}