需求
使用腾讯位置服务API进行定位,因为腾讯的API可以识别IPv6的位置,但是每天10000次调用很快就会耗尽,耗尽后网站不会报错,就是不会再显示位置了。
API申请地址:
https://lbs.qq.com
创建应用,添加key。应用产品选择webService接口
,根据IP还是域名调用根据自己情况选择。然后记录产生的key。
修改主题
在主题functions.php的最后面添加下面的代码。记得将申请到的key进行替换。
/* 腾讯Lbs IP定位服务 */
function curl_tencentlbs_ip($ip) {
//应用Key也就是上面所说的AK,修改成自己的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 '';
}
修改主题component/comments.php。在第104行</time>
前添加:
发送自<?php echo curl_tencentlbs_ip($comments->ip); ?>。
收工,拉倒评论区看一下效果。
3 条评论
还是本地好点,api的话最好还是ajax调用,评论完成后更新,不然影响网站打开速度了。
这个版本更实时,我用的是本地版。
每天一万次调用,评论多点就会无法调用。