{"id":26163,"date":"2021-06-22T17:48:00","date_gmt":"2021-06-22T14:48:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26163"},"modified":"2021-10-17T20:13:49","modified_gmt":"2021-10-17T17:13:49","slug":"etsi-maantieteellinen-sijainti-kayttamalla-ip-osoitetta-ilmaiseksi-php-sta","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/etsi-maantieteellinen-sijainti-kayttamalla-ip-osoitetta-ilmaiseksi-php-sta\/","title":{"rendered":"Etsi maantieteellinen sijainti k\u00e4ytt\u00e4m\u00e4ll\u00e4 IP-osoitetta ilmaiseksi PHP: st\u00e4"},"content":{"rendered":"<p>K\u00e4ytt\u00e4j\u00e4n paikannus- ja maakohtaisten tietojen etsiminen on v\u00e4ltt\u00e4m\u00e4t\u00f6nt\u00e4 useimmille verkkosivustoille. Luultavasti sinun on n\u00e4ytett\u00e4v\u00e4 erilaista sis\u00e4lt\u00f6\u00e4 k\u00e4ytt\u00e4j\u00e4n maan perusteella, n\u00e4ytett\u00e4v\u00e4 eri hinnat maan valuuttakoodien mukaan jne. N\u00e4iss\u00e4 tilanteissa sinun on l\u00f6ydett\u00e4v\u00e4 k\u00e4ytt\u00e4j\u00e4n maantieteellinen sijainti ja n\u00e4ytett\u00e4v\u00e4 sis\u00e4lt\u00f6 vastaavasti.<\/p>\n<p>T\u00e4ss\u00e4 artikkelissa n\u00e4yt\u00e4n sinulle, kuinka voit l\u00f6yt\u00e4\u00e4 maantieteellisen sijainnin k\u00e4ytt\u00e4m\u00e4ll\u00e4 k\u00e4ytt\u00e4j\u00e4n IP-osoitetta PHP: ss\u00e4. Aiomme k\u00e4ytt\u00e4\u00e4 <a href=\"https:\/\/ipgeolocationapi.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">IP Geolocation API -palvelua,<\/a> joka on t\u00e4ysin ilmainen.<\/p>\n<h3>Hanki maantieteellinen sijainti IP-osoitteen avulla<\/h3>\n<p>PHP: ss\u00e4 voimme k\u00e4ytt\u00e4\u00e4 &#8217;IP Geolocation API&#8217; -palvelua cURL: n ja Guzzlen kautta. Molemmat ovat suosittuja soittamaan ulkoisiin API-palveluihin ja saamaan vastauksen siit\u00e4. Projektisi kulusta riippuen voit k\u00e4ytt\u00e4\u00e4 joko cURL tai Guzzle. Molemmissa tapauksissa meid\u00e4n on ensin hankittava k\u00e4ytt\u00e4j\u00e4n IP-osoite. Joten kirjoita alla oleva menetelm\u00e4, joka palauttaa IP-osoitteen.<\/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>K\u00e4ytt\u00e4m\u00e4ll\u00e4 cURL<\/h4>\n<p>CURL tulee oletusarvoisesti PHP-asennuksen mukana. Mit\u00e4\u00e4n pakettia ei tarvitse asentaa erikseen. Sinun on vain varmistettava, ett\u00e4 se on k\u00e4yt\u00f6ss\u00e4 palvelimellasi ennen sen k\u00e4ytt\u00f6\u00e4.<\/p>\n<p>CURL: n kautta soitamme puhelun &#8217;IP Geolocation API&#8217; -p\u00e4\u00e4tteelle, joka antaa k\u00e4ytt\u00e4j\u00e4n IP-osoitteen ja tulostaa vastauksen.<\/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>Saat tuloksen JSON-muodossa jotain alla olevasta.<\/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>Guzzlen k\u00e4ytt\u00f6<\/h4>\n<p><a href=\"https:\/\/docs.guzzlephp.org\/en\/latest\/overview.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Guzzle<\/a> on PHP HTTP -asiakas HTTP-pyynt\u00f6jen l\u00e4hett\u00e4miseen. Se on vaihtoehto cURL: lle. Se tarjoaa paljon puhdasta koodia ja paremman kokemuksen kehitt\u00e4jille.<\/p>\n<p>Aluksi sinun on asennettava Guzzle Composerin avulla suorittamalla komento:<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<p>Kirjoita seuraavaksi koodi, joka kutsuu API: ta Guzzlen kautta.<\/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>N\u00e4in saamme maantieteellisen sijainnin k\u00e4ytt\u00e4m\u00e4ll\u00e4 PHP: n IP-osoitetta. Ole hyv\u00e4 ja jaa ajatuksiasi tai ehdotuksiasi alla olevassa kommenttiosassa.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/laravel-geoip-kirjasto-selvita-maantieteellinen-sijainti-ip-osoitteen-avulla\/\" title=\"Laravel Geoip Library - Selvit\u00e4 maantieteellinen sijainti IP-osoitteen avulla\">Laravel Geoip Library &#8211; Selvit\u00e4 maantieteellinen sijainti IP-osoitteen avulla<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-saada-maantieteellinen-sijainti-ip-lta-php-ssa\/\" title=\"Kuinka saada maantieteellinen sijainti IP: lt\u00e4 PHP: ss\u00e4\">Kuinka saada maantieteellinen sijainti IP: lt\u00e4 PHP: ss\u00e4<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-kayttaa-guzzlea-php-http-asiakas-http-pyyntojen-lahettamiseen\/\" title=\"Kuinka k\u00e4ytt\u00e4\u00e4 Guzzlea - PHP HTTP -asiakas HTTP-pyynt\u00f6jen l\u00e4hett\u00e4miseen\">Kuinka k\u00e4ytt\u00e4\u00e4 Guzzlea &#8211; PHP HTTP -asiakas HTTP-pyynt\u00f6jen l\u00e4hett\u00e4miseen<\/a><\/li>\n<\/ul>\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>Joskus meid\u00e4n on l\u00f6ydett\u00e4v\u00e4 k\u00e4ytt\u00e4j\u00e4n maantieteellinen sijainti palvelemaan erilaista sis\u00e4lt\u00f6\u00e4 maan mukaan. T\u00e4ss\u00e4 artikkelissa n\u00e4yt\u00e4mme sinulle, miten p\u00e4\u00e4st\u00e4<\/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":[275],"tags":[843],"class_list":["post-26163","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\/26163","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=26163"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/26163\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/21605"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=26163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=26163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=26163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}