header('Content-Type:text/html;Charset=utf-8');
function GetIp(){

$realip = '';

$unknown = 'unknown';

if (isset($_SERVER))

{

if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']) && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], $unknown))

{

$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);

foreach($arr as $ip)

{

$ip = trim($ip);

if ($ip != 'unknown'){

$realip = $ip;

break;

}

}

}else if(isset($_SERVER['HTTP_CLIENT_IP']) && !empty($_SERVER['HTTP_CLIENT_IP']) && strcasecmp($_SERVER['HTTP_CLIENT_IP'], $unknown))

{

$realip = $_SERVER['HTTP_CLIENT_IP'];

}else if(isset($_SERVER['REMOTE_ADDR']) && !empty($_SERVER['REMOTE_ADDR']) && strcasecmp($_SERVER['REMOTE_ADDR'], $unknown))

{

$realip = $_SERVER['REMOTE_ADDR'];

}else{

$realip = $unknown;

}

}else{

if(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), $unknown))

{

$realip = getenv("HTTP_X_FORWARDED_FOR");

}else if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), $unknown)){

$realip = getenv("HTTP_CLIENT_IP");

}else if(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), $unknown)){

$realip = getenv("REMOTE_ADDR");

}else{

$realip = $unknown;

}

}

$realip = preg_match("/[\d\.]{7,15}/", $realip, $matches) ? $matches[0] : $unknown;

return $realip;

}

function GetIpLookup($ip = '')
{

if(empty($ip))

{

$ip = GetIp();

}

$res = @file_get_contents('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=' . $ip);

if(empty($res))

{

return false;

}

$jsonMatches = array();

preg_match('#\{.+?\}#', $res, $jsonMatches);

if(!isset($jsonMatches[0]))

{

return false;

}

$json = json_decode($jsonMatches[0], true);

if(isset($json['ret']) && $json['ret'] == 1)

{

$json['ip'] = $ip;

unset($json['ret']);

}else{

return false;

}

return $json;

}

$ipInfos = GetIpLookup('123.125.114.144'); //baidu.com IP地址
var_dump($ipInfos);

PHP 根据IP地址获取所在城市的更多相关文章

  1. PHP:根据IP地址获取所在城市

    文件目录: ipLocation -----qqwry ----------QQWry.Dat -----ipCity.class.php ipCity.class.php文件代码: <?php ...

  2. PHP 依据IP地址获取所在城市

    有这种需求,须要依据用户的IP地址,定位用户所在的城市. 本文记录性文章,无逻辑性.有这样需求的朋友.能够直接拷贝使用.直接上代码,不需赘述. <? php header('Content-Ty ...

  3. PHP通过访问第三方接口,根据IP地址获取所在城市

    <?php header('Content-Type:text/html;Charset=utf-8'); /** * 获取IP地址 * * @return string */ function ...

  4. php 获取客户端IP地址经纬度所在城市

    1. [代码]获取客户端IP地址经纬度所在城市 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 <?php   $getIp=$_SERVER["REMOTE_ADDR ...

  5. PHP中根据IP地址判断所在城市等信息

    本篇文章由:http://xinpure.com/php-based-on-information-such-as-the-ip-address-in-your-city/ 获得IP地址 在 PHP ...

  6. 获取客户端IP地址经纬度所在城市

    <?php $getIp=$_SERVER["REMOTE_ADDR"]; echo 'IP:',$getIp; echo '<br/>'; $content = ...

  7. JS 利用新浪接口通过IP地址获取当前所在城市

    <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">< ...

  8. 腾讯新浪通过IP地址获取当前地理位置(省份)的接口

    腾讯新浪通过IP地址获取当前地理位置(省份)的接口  腾讯的接口是 ,返回数组 http://fw.qq.com/ipaddress 返回值 var IPData = new Array(" ...

  9. IP地址获取当前地理位置(省份)的接口

    腾讯的接口是 ,返回数组 http://fw.qq.com/ipaddress 返回值 var IPData = new Array("61.135.152.194"," ...

随机推荐

  1. java面试基础题------》抽象类和接口有什么异同

    划重点!!!! 1.抽象类(abstract class)和接口(interface)有什么异同? 相同点 * 都不能被直接实例化,都可以通过继承实现其抽象方法. * 都是面向抽象编程的技术基础,实现 ...

  2. BroPHP使用心得

    使用BroPHP 学习框架的时候,遇到了不少的问题. 一.修改了mysql 的表结构后,在程序中始终不体现表的修改. 给一个表添加了几个字段,在程序中对表添加数据,无论是用 select(),还是用 ...

  3. git之merge和rebase的区别

    merge合并 # merge操作 第一步: # 先创建一个目录,在主分支提交3个txt文件 [root@luchuangao]# mkdir oldboy [root@luchuangao]# gi ...

  4. 【使用时发生的意外】file is not sufficiently replicated yet

    异常堆栈如下: -- ::, ERROR [com.ultrapower.secsight.util.HdfsUtil] - 追加写入文件失败! org.apache.hadoop.ipc.Remot ...

  5. python pip命令技巧

    确保本地开发环境,和线上一致性 1.导出当前解释器的模块pip3 freeze > requirements.txt 2.将这个文件requirements.txt,上传至服务器,在新的虚拟环境 ...

  6. Linux kill和kill-9区别

    进程状态转换图 kill和kill -9,两个命令在linux中都有杀死进程的效果,然而两命令的执行过程却大有不同,在程序中如果用错了,可能会造成莫名其妙的现象. 执行kill命令,系统会发送一个SI ...

  7. SDUT3165:Round Robina(循环链表)

    题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=3165 题意分析: 比赛时这题没有A真伤心 ...

  8. Spring基本功能-IOC

    一.SpringIOC Spring的控制反转:把对象的创建,初始化,销毁的过程交给SpringIOC容器来做,由Spring容器控制对象的生命周期. 1.1 启动Spring容器的方式: (1)加载 ...

  9. Delphi程序调用C#.Net编译的DLL并打开窗体(详解)

    Delphi程序调用C#.Net编译的DLL并打开窗体(详解)最近用C#.Net写了一个公用模块, 本以为仅提供给.Net程序使用, 但是领导要求把这些功能提供给旧系统使用, 天啦, 几套旧系统全是D ...

  10. vmware下安装centos7

    下载vmware http://down-www.newasp.net/pcdown/big/wm_pro_14_win.rar 下载centos7 https://www.centos.org/do ...