更具IP获得城市信息(百度API的运用)

    /**
     * 根据IP获取城市
     * @param string $ip ip地址
     * @return array
     * http://api.map.baidu.com/location/ip?ak=32f38c9491f2da9eb61106aaab1e9739&ip="+ip
     */
    public function getCityByIp($ip)
    {
        $result = false;
        $url =  "http://api.map.baidu.com/location/ip?ak=32f38c9491f2da9eb61106aaab1e9739&ip=".$ip;
        $result = file_get_contents($url);
        $result = json_decode($result);
        $result = self::objtoarr($result);
        if (is_array($result) && isset($result[‘status‘])) {
            if ($result[‘status‘] == 0 && isset($result[‘content‘])) {
                $result[‘city‘] = iconv(‘utf-8‘, ‘gbk‘, $result[‘content‘][‘address_detail‘][‘city‘]);
            }
        }
        return $result;
    }
    /**
     * 将对象类型数据转化为数组形式
     * @param stdClass Object $obj 对象类型数据
     * @return array
     */
    public static function objtoarr($obj)
    {
        $ret = array();
        foreach ($obj as $key =>$value) {
            if (gettype($value) == ‘array‘ || gettype($value) == ‘object‘) {
                $ret[$key] = self::objtoarr($value);
            } else {
                $ret[$key] = $value;
            }
        }
        return $ret;
    }

 

/**
* 获取客户端IP地址
* @param boolean $pasportlogin 是否是passport登录
* @param boolean $forwarded    是否取HTTP_X_FORWARDED_FOR
* @return string
*/
function Get_Client_ip($pasportlogin = true, $forwarded = false)
{
    if (getenv("HTTP_X_REAL_IP") && strcasecmp(getenv("HTTP_X_REAL_IP"), "unknown") && !$forwarded)
        $ip = getenv("HTTP_X_REAL_IP");
    else if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
       $ip = getenv("HTTP_CLIENT_IP");
    else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
        $ip = getenv("HTTP_X_FORWARDED_FOR");
    else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
        $ip = getenv("REMOTE_ADDR");
    else if (isset($_SERVER[‘REMOTE_ADDR‘]) && $_SERVER[‘REMOTE_ADDR‘] && strcasecmp($_SERVER[‘REMOTE_ADDR‘], "unknown"))
        $ip = $_SERVER[‘REMOTE_ADDR‘];
    else
        $ip = "unknown";

    if ($pasportlogin === true) {
        if (false !== strpos($ip, ‘,‘)) {
            $arrIp = explode(‘, ‘, $ip);
            for ($i = 0; $i < count($arrIp); $i++) {
                if (!eregi("^(10|172\.16|192\.168)\.", $arrIp[$i])) {
                    $ip = $arrIp[$i];
                    break;
                }
            }
        }
    }

    return($ip);
}

时间: 2024-10-06 18:50:21

更具IP获得城市信息(百度API的运用)的相关文章

php 获取IP 根据IP 获取城市信息 判断是否手机登陆

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('

(分享)根据IP获取地理位置(百度API)

说明: 本程序调用的百度地图接口 http://lbsyun.baidu.com/index.php?title=webapi/high-acc-ip#h. 使用C#语言+VS2015 IDE开发 效果图: 程序使用了SE壳保护 所以安装360的用户可能会报毒~ 运行这个程序需要: .net framework 4.0运行环境~ XP用户用不了的安装一下~~~ 自行百度下载~ 给大家分享贡献一个我自己的秘钥: cIUHlIrPoVBrOcudxl4qhZMtoGlRzvyu 自己偷偷的知道就好咯

根据Ip获取城市帮助类

思路构建 1.先通过本地的测IP地址库进行匹配 2.如果本地IP地址库存在此IP的城市信息,就直接返回,调用速度也快 3.如果本地没有对应的IP城市信息,必须通过调用网络的IP查询的API了,这里我使用了(百度,新浪,和淘宝) 注意:百度的调用不是很正常,大批量调用 要引用dll Newtonsoft.Json.dll 下载地址:http://www.newtonsoft.com/products/json/ 1.解压下载文件,得到Newtonsoft.Json.dll   2.在项目中添加引用

DELPHI调用百度定位API(根据IP获取城市及GPS信息等)

缘由:因智能助理在用户说出“天气如何”时,需要自动获取城市,所以这里需要根据用户IP自动获取城市,所以有了这篇文章 QQ508882988 //根据百度API,根据来访IP自动获取出该IP所在的位置及更多信息,参数IP为空时,会使用当前访问者的IP地址作为定位参数 //sServerAK为用户密钥 string 必选,在lbs云官网注册的access key,作为访问的依据,定期从http://lbsyun.baidu.com/apiconsole/key获取 //参考http://lbsyun

百度地图API的IP定位城市和浏览器定位(转)

百度地图API提供了Geolocation 和 LocalCity两个服务类. 这俩API可以分别供用户在JavaScript中进行定位和城市确认. 1 本质上,Geolocation这个类是使用了支持HTML5浏览器提供的Geolocation API 来进行定位的.目前Internet Explorer 9.Firefox.Chrome.Safari 以及 Opera 支持地理定位(因为他们支持HTML5). 2 本质上,LocalCity这个类是利用用户IP地址去百度数据库里查询得到IP所

geolocation/ 百度地图api Geolocation 定位当前城市信息

根据当前所处位置 定位所在城市信息 <html> <head> <meta charset="UTF-8" /> <title>js 百度 geolocation 定位当前城市</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="vi

获取客户端IP地址定位城市信息

获取客户端IP地址定位城市信息 1.首先获取客户端的IP地址 function getIPaddress(){ $IPaddress=''; if (isset($_SERVER)){ if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){ $IPaddress = $_SERVER["HTTP_X_FORWARDED_FOR"]; } else if (isset($_SERVER["HTTP_CLIENT_IP&qu

微信小程序自动定位,通过百度地图根据经纬度获取该地点所在城市信息

微信小程序获得经纬度 var that = this wx.getLocation({ type: 'wgs84', success(res) { console.log(res) that.setData({ latitude: res.latitude, longitude: res.longitude }) } }) 百度地图api 'https://api.map.baidu.com/geocoder/v2/?location=' + res.latitude+',' + res.lon

通过百度API获取城市公交线路坐标点及站点信息

话不多说,先挂最后的数据结果,如果这是你想要的,我们再接着看: 公交线路坐标数据&公交站点坐标数据     正文开始: 前期数据准备:获取城市所有公交线路名称 使用python爬取,结果如下,代码参考:https://www.cnblogs.com/Qiuzhiyu/p/12183140.html 需要准备的js包: <!--用于坐标系转换的js包 详见github:https://github.com/hujiulong/gcoord --> (非必须) <script src