如果找到,则返回“城市,州”,否则返回顶部设置的默认值。
function detect_city($ip) {
$default = 'UNKNOWN';
if (!is_string($ip) || strlen($ip) < 1 || $ip == '127.0.0.1' || $ip == 'localhost')
$ip = '8.8.8.8';
$curlopt_useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)';
$url = 'http://ipinfodb.com/ip_locator.php?ip=' . urlencode($ip);
$ch = curl_init();
$curl_opt = array(
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_USERAGENT => $curlopt_useragent,
CURLOPT_URL => $url,
CURLOPT_TIMEOUT => 1,
CURLOPT_REFERER => 'http://' . $_SERVER['HTTP_HOST'],
);
curl_setopt_array($ch, $curl_opt);
$content = curl_exec($ch);
if (!is_null($curl_info)) {
$curl_info = curl_getinfo($ch);
}
curl_close($ch);
if ( preg_match('{<li>City : ([^<]*)</li>}i', $content, $regs) ) {
$city = $regs[1];
}
if ( preg_match('{<li>State/Province : ([^<]*)</li>}i', $content, $regs) ) {
$state = $regs[1];
}
if( $city!='' && $state!='' ){
$location = $city . ', ' . $state;
return $location;
}else{
return $default;
}
}
请不要伪造 Web 浏览器用户代理
如果需要提供用户代理(这并不罕见,也是一种好习惯),请填写有意义的内容
谢谢 :)
请注意,这可能无法很好地扩展,因为它依赖于第三方服务,并且依赖于该服务的 HTML 输出。 随时可能中断,并且可能会减慢页面速度。
(当然,对从这里获得的任何内容进行清理,不要假设任何内容)
不幸的是,ipinfodb.com 服务并不十分准确……我在旧金山闹市区,它认为我在加州圣克拉拉。 :(
嘿。
我想知道如何获取有关 IP 距离我的距离的信息? 谢谢。
这能帮助我在网站上为特定州打开一项功能吗???
我来自加尔各答,但它显示我来自孟买!!
很棒的脚本和简单的编码……非常有效。
谢谢……
如何将此脚本转换为 WordPress 插件?
我完全同意 TeMC
试试这个 http://www.creativebrain.web.id/media.php?action=readnews&id=319&title=PHP%20Script%20%3A%20IP%20Address%20Detector
我希望我的脚本有用 :)
朋友,你的脚本也在解析第三方网站。
很棒的片段,不过可以更新一下!
你的朋友,StevenCodes。
嗨,
在 PHP 中试试这个,这也使用了一个第三方网站。
这是我目前在通过 IP 检测位置时使用过的最短代码。
:)
我试过了,不幸的是它关闭了免费服务
对我来说,如果要使用第三方服务,最好依赖于一些专为外部访问而设计且不解析任何 HTML 页面。 例如,这里有一项服务提供良好的 JSON 或 XML 接口来访问地理位置 IP 数据:http://smart-ip.net/geoip-api
那些报告错误位置的人需要记住,IP 只能让你了解分配 IP 的 ISP 网络段。 所以,如果你在一个网络基础设施密集的地区,它会更准确,但如果你在一个更偏远的地区或外国,网络段可能很大。
ipinfo.io 怎么样?
你可以只使用这个:http://ipinfo.io/json
你会得到完美的 JSON 输出.. 但你必须使用它与 JS
或者用 PHP 来代替
一行 PHP 代码
print_r(json_decode(file_get_contents('http://ipinfo.io/'.$_SERVER['REMOTE_ADDR'].'/json'), true));
干净的 PHP 代码
返回
谢谢,这是最简单实用的地理位置 IP 脚本。
你正在使用的 API 速度很慢,而且有时也会显示错误的信息,请查看这个:http://codicious.blogspot.in/2014/04/getting-ip-address.html
它使用不同的 API 来获取 IP 信息,速度也很快,显示的信息也正确。
嗨,我们可以通过 IP 检测位置。 通过此网站通过 IP 检测位置 http://www.melissadata.in/cloud-services/ip-locator-cloud-service
哦,天哪,这已经有 7 年了。 难怪它不起作用。