Возможный дубликат:
пакет для обнаружения пользователей в php?
Географическое местоположение на основе IP-адреса – PHP
Я хочу обнаружить страну моего посетителя.
И я нашел решение в Google, но результат ничего.
Вы можете мне помочь?
<?php // Author: www.easyjquery.com $ip = $_SERVER['REMOTE_ADDR']; // remember chmod 0777 for folder 'cache' $file = "./cache/".$ip; if(!file_exists($file)) { // request $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true"); $f = fopen($file,"w+"); fwrite($f,$json); fclose($f); } else { $json = file_get_contents($file); } $json = json_decode($json,true); echo "<pre>"; print_r($json); ?>
Демо-ссылка
Вот мой способ получить страну вместе с ip посетителя.
// this is where you get the ip $ip = $_SERVER['REMOTE_ADDR']; // this is where you include the code that gets the country // you can find the code for this file on the link below include("geoiploc.php"); // this is where you create the variable that get you the name of the country $country = getCountryFromIP($ip, " NamE ");
в// this is where you get the ip $ip = $_SERVER['REMOTE_ADDR']; // this is where you include the code that gets the country // you can find the code for this file on the link below include("geoiploc.php"); // this is where you create the variable that get you the name of the country $country = getCountryFromIP($ip, " NamE ");
php geo ip loc не работает
Надеюсь это поможет.
Пусть код будет с вами!
Обновить:
Вот еще один метод, который я использовал
$json = file_get_contents('http://ipinfo.io/' . $this->getIP()); $data = json_decode($json); return $data->country;
Существует также эта услуга, но я нашел один выше намного лучше …
'http://getcitydetails.geobytes.com/GetCityDetails?fqcn=' . $this->getIP()
Вот хороший способ получить ip:
private function getIP() { $server_keys = [ 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR' ]; foreach ($server_keys as $key) { if (array_key_exists($key, $_SERVER) === true) { foreach (explode(',', $_SERVER[$key]) as $ip) { if (filter_var($ip, FILTER_VALIDATE_IP) !== false) { return $ip; } } } } }
Надеюсь, это поможет кому-то!