当前位置:首页 > 笔记 > 正文内容

关于“拓源纯净主题”引发的Undefined array key "pro" 的修复

5个月前 (11-28)

之前我也这样,后来在网上搜索一下,说是拓源纯净主题主题有问题,换个主题就好了,所以就换了,今天看论坛上,出现不需要更换主题的方法,就摘录过来了。


作者:bnbplayer

摘自:https://bbs.zblogcn.com/thread-106731.html

现象如下图所示:


经查,是由于该主题的留言IP查询接口返回为空导致的问题,需要更换一个比较稳定的查询接口。(图片非本站,懒得去自己网站截图了)但不同的接口返回的数据类型也不一样,所以需要更改解析方式。


1、打开拓源主题的include.php文件,位置在zblog安装目录下的/zb_users/theme/tpure

2、按Ctrl+F查找函数:tpure_IP

3、将该函数的函数体全部用/*   */注释,并在函数体的最后一行增加一行代码:

return ip_query($ip)

4、接下来需要自己实现ip_query函数,将该函数放在tpure_IP的前面,代码如下:

function ip_query($ip)

{

    $url = "https://opendata.baidu.com/api.php?query={$ip}&co=&resource_id=6006&oe=utf8";//此处使用百度API

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false );

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    $location = curl_exec($ch);

    curl_close($ch);

    $ip_obj = json_decode($location, true);

    

    if(0 != count($ip_obj['data']) && array_key_exists('location', $ip_obj['data'][0]))

        return $ip_obj['data'][0]['location'];

    else

        return '未知';

}

此时完整的内容为:

相当于不再使用原本的实现,而使用自己的实现,但函数名称不变。保存即可。


有动手能力的大佬也可以将API换成其他的,但是解析代码也同样要换。


扫描二维码推送至手机访问。

版权声明:本文由夕阳西下发布,如需转载请注明出处。

发布于:乌鲁木齐

出售域名维持生计,网店地址:https://mi.aliyun.com/shop/53711



本文链接:https://www.rzya.top/index.php/post/34.html

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。