偶然逛CSDN看到腾讯的LBS服务支持IP定位,而且还支持IPv6地址定位,这个是其他LBS供应商所不支持的 (百度地图、高德地图),所以腾讯LBS服务还算良心。
接下来 UP主 将用Joe主题为示例,出一个简单的教程教大家怎么样对接腾讯LBS展示IP属地!
注册账号
打开 腾讯位置服务 官网,点击登录,直接使用QQ登录或微信登录即可,使用QQ登录或微信登录后会提示注册或绑定账号,这个时候我们直接选择注册账户即可。
创建应用
打开控制台,左侧有一个应用管理,点击后可创建应用,输入应用名称和应用类型即可,无需输入域名、备案信息啥的,所以这方便无需担心。
一个应用可以添加多个Key,一个Key每日可调用10000次,并发5次每秒。这时候我们选择 WebService API 服务即可,选择后有三种方案,域名白名单、授权IP、签名校验,这里为了方便展示我采用域名白名单效验。(三种方法随便大家自行选择,这里推荐授权IP效验)
保存应用后我们就可以拿到一个Key,这里我们简称Ky,下面我们开始对接Joe主题展示博友访客IP属地信息。
Joe主题调用方法
核心代码位置在 Joe/core/function.php
文件末尾添加以下代码:
/* 腾讯Lbs IP定位服务 */
function curl_tencentlbs_ip($ip) {
//应用Key也就是上面所说的Ky,修改成自己的Key即可
$key = 'XXX-XXX';
$url = 'https://apis.map.qq.com/ws/location/v1/ip?ip='.$ip.'&key='.$key;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HTTPGET, true);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36');
$content = curl_exec($ch);
curl_close($ch);
if($content) {
$json = json_decode($content,true);
if($json['status'] == 0 ) {
$resjson = $json['result']['ad_info'];
if($resjson['province']=='北京市'||$resjson['province']=='天津市'||$resjson['province']=='上海市'||$resjson['province']=='重庆市') {
return $resjson['nation'].$resjson['city'];
}
return $resjson['nation'].$resjson['province'];
}
}
return '';
}
修改主题评论区代码
评论代码位置在 usr/themes/Joe/public/comment.php
文件115行左右。
具体位置如下:
<?php if ($comments->authorId === $comments->ownerId) : ?>
<i class="owner">作者</i>
<?php endif; ?>
<?php if ($comments->status === "waiting") : ?>
<em class="waiting">(评论审核中...)</em>
<?php endif; ?>
在上方代码下面添加如下代码:
<?php echo curl_tencentlbs_ip($comments->ip); ?>
显示效果见本站!
不错,已借鉴!