找到
6
篇与
技术文章
相关的结果
- 第 2 页
-
Joe再续前缘版对接LBS展示IP属地(本站同款) 为深度贯彻落实中央网信办《互联网用户账号信息管理规定》,开放查询IP操作,特将办法如下: 本文来源: https://blog.yanqingshan.com/130.html 上次偶然逛 CSDN 看到腾讯的 LBS 服务支持 IP 定位,而且还支持 IPv6 地址定位,这个是其他 LBS 供应商所不支持的 (百度地图、高德地图),所有腾讯 LBS 服务还算良心。我们一步一步对接主题吧,今天先来申请应用 AK。 注册账号 打开腾讯位置服务官网,点击登录,直接使用 QQ 登录或微信登录即可,如果单独注册需要输入手机号之类,麻烦的事情,但是使用 QQ 登录 / 微信登录后也需要校验一下手机号,但是个人信息不用填写太多。 腾讯位置服务官网 使用 QQ 登录 / 微信登录后会提示注册或绑定账号,这个时候我们直接选择注册账户即可。 绑定新用户 你看这样简单吧,输入手机号和邮箱就 OK, 不用填写过多信息,下次可以直接使用 QQ 或者微信登录即可。 注册账户 创建应用 这时候我们选择 WebService API 服务即可,选择后有三种方案,域名白名单、授权 IP、签名校验,一般我们会部署在服务器上,所以可以选择授权 IP,这样方便一些;域名白名单和签名校验限制有些多,且我们这次对接主题也是以授权 IP 为主。 保存后我们就能拿到一个 Key,这里我们简称 AK,下面开始对接 Joe 主题展示博友访客 IP 属地信息。 注意AK要给其分配调用次数 添加主题调用方法 2022.05.25:为了个人隐私,以下代码已去除城市和区县信息,仅显示国家和省 核心方法代码位置:Joe/core/function.php 在末尾添加以下代码 /* 腾讯Lbs IP定位服务 */ function curl_tencentlbs_ip($ip) { //应用Key也就是上面所说的AK,修改成自己的Key即可 $key = '5E4BZ-NYCKQ-2C25A-2E4PB-7CXJH-AMBKN'; $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']=='重庆市') { echo $resjson['nation'].$resjson['city']; } echo $resjson['nation'].$resjson['province'].$resjson['city'].$resjson['district']; } } else echo '未知IP地址'; echo ''; }上面调用接口后,处理以下国内的直辖市,这样就不会显示成北京市北京市了。 修改主题评论相关代码 评论代码位置:/comment.php 需要修改的位置大概在末尾最后一个方法,位置 112 行。 也可以在需要显示评论信息的位置插入下方嵌入点代码即可,我是把 IP 信息放在 agent 旁边了,这样不是特别显眼。 <?php echo curl_tencentlbs_ip($comments->ip); ?> 以下示例代码从 96 行到尾部 <?php function threadedComments($comments, $options) { ?> <li class="comment-list__item"> <div class="comment-list__item-contain" id="<?php $comments->theId(); ?>"> <div class="term"> <img width="48" height="48" class="avatar lazyload" src="<?php joe\getAvatarLazyload() ?>" data-src="<?php joe\getAvatarByMail($comments->mail); ?>" alt="头像" /> <div class="content"> <div class="user"> <span class="author"><?php $comments->author(); ?></span> <?php if ($comments->authorId === $comments->ownerId) : ?> <i class="owner">作者</i> <?php endif; ?> <?php if ($comments->status === "waiting") : ?> <em class="waiting">(评论审核中...)</em> <?php endif; ?> <div class="agent"> <?php joe\curl_tencentlbs_ip($comments->ip); ?> · <?php joe\getAgentOS($comments->agent); ?> · <?php joe\getAgentBrowser($comments->agent); ?></div> </div> <div class="substance"> <?php joe\getParentReply($comments->parent) ?> <?php echo _parseCommentReply($comments->content); ?> </div> <div class="handle"> <time class="date" datetime="<?php $comments->date('Y-m-d'); ?>"><?php $comments->date('Y-m-d'); ?></time> <span class="reply joe_comment__reply" data-id="<?php $comments->theId(); ?>" data-coid="<?php $comments->coid(); ?>"> <i class="icon fa fa-pencil" aria-hidden="true"></i>回复 </span> </div> </div> </div> </div> <?php if ($comments->children) : ?> <div class="comment-list__item-children"> <?php $comments->threadedComments($options); ?> </div> <?php endif; ?> </li> <?php } ?>代码经过二次改造,适配Joe再续前缘版 其他博客主题,应该也可以适用。