简单获取当前IP,通过ip获取城市名称(文字形式,非地图)

我就是想简单获取当前的城市名称,在网上找了好多资料,都是百度地图申请安卓AK,下载SDK!!!这样太麻烦了!!!在申请AK时候,就找不到那几个要填的选项!!!

后来经过不懈努力,终于找到简单的方法,百度地图API只需要配置服务端的ak就可以了,这个相当简单!!! 

然后就是通过IP地址获取城市名称!!!话不多说,直接上干货,希望做同样功能的伙伴能少走弯路!!!

1.通过js获取	IP
	这里是代用的搜狐接口
<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
<script>
    console.log(returnCitySN.cip);//当前ip
`</script>``
将IP通过ajax发送到后台看回调就可以了


2.关键的来了!!! 返回的就是你想要的数据了!!!
public function local_ip()
{
    //API控制台申请得到的ak(此处ak值仅供验证参考使用)
    $ak = '你自己的秘钥';

    //应用类型为for server, 请求校验方式为sn校验方式时,系统会自动生成sk,可以在应用配置-设置中选择Security Key显示进行查看(此处sk值仅供验证参考使用)
    $sk = '你自己的sk';

    //以Geocoding服务为例,地理编码的请求url,参数待填
    $url = "http://api.map.baidu.com/location/ip?ip=%s&ak=%s&sn=%s";

    //get请求uri前缀
    $uri = '/location/ip';

    //地理编码的请求中address参数
    $ip = $_POST['ip'];


    //构造请求串数组
    $querystring_arrays = array (
        'ip' => $ip,
        'ak' => $ak
    );

    //调用sn计算函数,默认get请求
    $sn = $this -> caculateAKSN($sk, $uri, $querystring_arrays);

    //请求参数中有中文、特殊字符等需要进行urlencode,确保请求串与sn对应
    $target = sprintf($url, urlencode($ip), $ak, $sn);

            $res = file_get_contents($target);
            $res = json_decode($res,true);
            echo json_encode($res);

}
//配合上面的通过ip获取地址
public function caculateAKSN($sk, $url, $querystring_arrays, $method = 'GET')
{
    if ($method === 'POST'){
        ksort($querystring_arrays);
    }
    $querystring = http_build_query($querystring_arrays);
    return md5(urlencode($url.'?'.$querystring.$sk));
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值