PHP解析客户端IP及归属地

此处需求:测试某调用外部API模块能否实现,通过PHP编写测试API用于解析客户端IP,后拓展调用腾讯地图开发者服务API对IP进行二次解析获取归属地(最高精确到区)。

仅解析ip

 		$data['time'] = date("Y-m-d H:i:s", time());
        $data['ip'] = $_SERVER["REMOTE_ADDR"];
        (Db::table('ip_access')->insert($data) == 1);//插入数据库,部分情况下仅调用api,无返回结果,用于检测是否成功调用
        $json = array(
            'data' => $data['time'].'    '.$data['ip'],
        );
        $in_charset='GBK';
        $ret = eval('return ' . iconv($in_charset, "utf-8", var_export($json, true)) . ';');
         return $ret;
         die;

此处已经实现了解析客户端ip,并记录数据库、返回时间及ip的功能

二次解析归属地

		$key="your_key";//你的key
        $ip_add = "";//放一个ipadd的空变量
        $ip_info = (file_get_contents('https://apis.map.qq.com/ws/location/v1/ip?key='.$key.'&ip='.$data['ip']));//发请求,data['ip']前面获取的
        $a=json_decode($ip_info,true)['result']['ad_info'];//解析获取我们需要的字段
        //用了四个平行if,纯属比较懒,别喷。
        if(array_key_exists('nation',$a))$ip_add=$ip_add.$a['nation'];
        if(array_key_exists('province',$a))$ip_add=$ip_add.$a['province'];
        if(array_key_exists('city',$a))$ip_add=$ip_add.$a['city'];
        if(array_key_exists('district',$a))$ip_add=$ip_add.$a['district'];
        $data['ip_add'] = $ip_add;
        $ret['data']=$ret['data'].$data['ip_add'];
        die;

将代码融合到【仅解析ip】之中,即可实现解析ip归属地的需求。
以下是测试结果
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值