Joe 主题对接腾讯 LBS 展示 IP 属地
标签搜索
侧边栏壁纸
  • 累计撰写 16 篇文章
  • 累计收到 2 条评论

Joe 主题对接腾讯 LBS 展示 IP 属地

艾霂Mr.
2024-12-19 / 1 评论 / 17 阅读 / 正在检测是否收录...

偶然逛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); ?>

显示效果见本站!

2

评论 (1)

  取消
  1. 头像
    Zyyo 美国 Cogent
    Android · Google Chrome

    不错,已借鉴!

    回复