php实现根据IP地址获取其所在省市的方法

 更新时间:2015年04月30日 10:12:59   投稿:hebedich  
今天,就讨论一下在PHP中如何获取用户IP地址、PHP根据IP判断用户所在城市以及PHP根据IP实现城市切换或跳转的问题。

根据现有IP地址获取其地理位置(省份,城市等)的方法

function GetIpLookup($ip = ''){  
  if(empty($ip)){  
    return '请输入IP地址'; 
  }  
  $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); 

再发一个简化版的

function getIpAddress(){  
  $ipContent  = file_get_contents("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js");  
  $jsonData = explode("=",$ipContent);   
  $jsonAddress = substr($jsonData[1], 0, -1);  
  return $jsonAddress;  
}  
$ip_info=json_decode(getIpAddress());  

PHP根据IP地址实现城市切换或跳转

到这里,其实问题已经很简单了,用简单的js就通通搞定。C段如下:

//根据IP地址跳转指定页面js取得城市

var city='<?echo ipCity($xp_UserIp);?>'; //根据IP地址所有城市跳转到指定页面

if(city.indexOf("上海市")>=0){

         window.location.href="http://shanghai.demo.com/"; }
将开头的A段代码和上面的C段代码分别放在B段代码的头和尾,然后我们在需要跳转的页面加入以下代码:

<script src="/ipcity/ipaddress.php" type="text/javascript" language="javascript"></script>
刷新页面,是不是达到预想的效果了呢?

以上所述就是本文的全部内容了,希望大家能够喜欢。

相关文章

  • Yii视图CGridView列表用法实例分析

    Yii视图CGridView列表用法实例分析

    这篇文章主要介绍了Yii视图CGridView列表用法,结合实例形式分析了CGridView列表的视图及功能实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • PHP实现微信申请退款流程实例代码

    PHP实现微信申请退款流程实例代码

    本篇文章给大家介绍php实现微信申请退款流程,使用到官方提供的SDK中的最重要的一个类文件WxPay.Api.php中提供的refund()方法来实现的,完整大家大家参考下本文
    2018-03-03
  • 用Simple Excel导出xls实现方法

    用Simple Excel导出xls实现方法

    因为前几天写了篇文章,用php-excel-reader类导入excel内容,顺便说些excel导出问题,需要的朋友可以了解下
    2012-12-12
  • PHP中使用pthread拓展

    PHP中使用pthread拓展

    这篇文章主要介绍了PHP中使用pthread拓展,本文讲述线程类的使用方法和线程类的概念和使用场景,以及具体的代码实现,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • thinkphp3.0输出重复两次的解决方法

    thinkphp3.0输出重复两次的解决方法

    这篇文章主要介绍了thinkphp3.0输出重复两次的解决方法,是ThinkPHP2.x用户转3.x经常会遇到的问题,需要的朋友可以参考下
    2014-12-12
  • Linux下从零开始安装配置Nginx服务器+PHP开发环境

    Linux下从零开始安装配置Nginx服务器+PHP开发环境

    这篇文章主要介绍了Linux下从零开始安装配置Nginx服务器+PHP开发环境的教程,文中采用的是最主流的FastCGI连接方法,需要的朋友可以参考下
    2015-12-12
  • PHP date函数常用时间处理方法

    PHP date函数常用时间处理方法

    这篇文章主要介绍了PHP date函数常用时间处理方法,本文介绍获取今天、明天、昨天、一周后、一个月前、一个月后等时间的方法,需要的朋友可以参考下
    2015-05-05
  • ThinkPHP中create()方法自动验证表单信息

    ThinkPHP中create()方法自动验证表单信息

    这篇文章主要为大家详细介绍了ThinkPHP中create()方法自动验证表单信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • 解决laravel中日志权限莫名变成了root的问题

    解决laravel中日志权限莫名变成了root的问题

    今天小编就为大家分享一篇解决laravel中日志权限莫名变成了root的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • ThinkPHP分页实例

    ThinkPHP分页实例

    这篇文章主要介绍了ThinkPHP分页实例,详细讲述了ThinkPHP分页的完整实现步骤,包括模型层、视图层以及样式的代码,需要的朋友可以参考下
    2014-10-10

最新评论