zibll子比主题评论和用户主页显示IP归属地功能[本地纯真数据库配置教程]-zibll综合交流社区-zibll子比主题-WordPress主题模板-zibll子比主题

zibll子比主题评论和用户主页显示IP归属地功能[本地纯真数据库配置教程]

我个人不是很喜欢使用太平洋接口,恰好我会一点点php,就随随便便搞了个本地纯真数据库接口,IPQuery.class.php,qqwry.dat我会放到网盘里

教程开始

1 配置IPQuery.class.php、qqwry.dat文件

文件地址 https://qdqd.lanzouq.com/iK2a714viugb

把压缩包解压到/wp-content/themes/zibll/inc/functions/目录里面,就可以开始操作了

2 配置functions.php

大家找到/wp-content/themes/zibll/inc/functions/funcitons.php这个文件

zib_get_geographical_position_by_ip

大概 是 2509行 到 2577行 里面的内容

这个函数,把里面的内容替换为

function zib_get_geographical_position_by_ip($ip)
{
    if (!$ip || strstr($ip, '0.0.0.') || strstr($ip, '192.168.') || strstr($ip, '127.0.')) {
        return false;
    }

    $sdk = _pz('ip_addr_sdk');

    if ($sdk === 'qq') {
        $ip_addr_sdk = _pz('ip_addr_sdk_qq');
        if (!empty($ip_addr_sdk['appkey'])) {
            return zib_get_geographical_position_by_qq($ip, $ip_addr_sdk['appkey'], $ip_addr_sdk['secretkey']);
        }
    }

    if ($sdk === 'cz') {
        $ip_addr_sdk = _pz('ip_addr_sdk_cz');
            return zib_get_geographical_position_by_cz($ip);
    }

    if ($sdk === 'amap') {
        $ip_addr_sdk = _pz('ip_addr_sdk_amap');
        if (!empty($ip_addr_sdk['appkey'])) {
            return zib_get_geographical_position_by_amap($ip, $ip_addr_sdk['appkey'], $ip_addr_sdk['secretkey']);
        }
    }

    if ($sdk === 'polling') {
        $qq_data   = array();
        $amap_data = array();
        $data      = array();

        //通过qq查询
        $ip_addr_sdk = _pz('ip_addr_sdk_qq');
        if (!empty($ip_addr_sdk['appkey'])) {
            $qq_data = zib_get_geographical_position_by_qq($ip, $ip_addr_sdk['appkey'], $ip_addr_sdk['secretkey']);
            if (!empty($qq_data['province'])) {
                return $qq_data;
            }
        }

        //通过高德查询
        $ip_addr_sdk = _pz('ip_addr_sdk_amap');
        if (!empty($ip_addr_sdk['appkey'])) {
            $amap_data = zib_get_geographical_position_by_amap($ip, $ip_addr_sdk['appkey'], $ip_addr_sdk['secretkey']);
            if (!empty($amap_data['province'])) {
                return $amap_data;
            }
        }

        //通过本地纯真数据库查询
        if ($sdk === 'cz') {
            $ip_addr_sdk = _pz('ip_addr_sdk_cz');
            return zib_get_geographical_position_by_cz($ip);
        }

        //太平洋公共接口
        $data = zib_get_geographical_position_by_pconline($ip);
        if (!empty($data['province'])) {
            return $data;
        }

        //都没有身份,则进行对比国家
        if (!empty($qq_data['nation'])) {
            return $qq_data;
        }

        if (!empty($amap_data['nation'])) {
            return $amap_data;
        }

        if (!empty($data['nation'])) {
            return $data;
        }

        return false;
    }

    return zib_get_geographical_position_by_pconline($ip);
}

 

3 配置zib-tool.php

大家找到/wp-content/themes/zibll/inc/functions/zib-tool.php这个文件

拉到最下面,粘贴这个函数

function zib_get_geographical_position_by_cz($ip, $debug = false)
{

    //通过本地纯真数据库来获取 By:UQ QQ:3096069542
    require_once('IPQuery.class.php');
    $ipcx = new IPQuery();
    $addr = $ipcx->query($ip);
    $response=array('Country'=>$addr['pos']);

    $data = array(
        'ip'       => $ip,
        'nation'   => !empty($addr['pos']) ? $addr['pos'] : '',
        'province' => !empty($addr['pos']) ? $addr['pos'] : '',
        'city'     => !empty($addr['pos']) ? $addr['pos'] : '',
        'sdk'      => 'pconline',
    );

    return $data;
}

 

4 配置action.php

大家找到/wp-content/themes/zibll/inc/options/action.php这个文件

大概是在第 699行 粘贴下面代码

case 'cz':
            $ip_addr_sdk = _pz('ip_addr_sdk_amap');

            $test = zib_get_geographical_position_by_cz($ip, true);

            if (!$test) {
                echo (json_encode(array('error' => 1, 'msg' => '网络数据获取失败,请确保服务器网络畅通')));
                exit;
            }

            if (!isset($test['nation'])) {
                $test['ip'] = $ip;
                echo (json_encode(array('error' => 1, 'msg' => '本地纯真数据库接口请求失败,错误信息:<br>' . json_encode($test, JSON_UNESCAPED_UNICODE))));
                exit;
            }

            echo (json_encode(array('error' => 0, 'msg' => '本地纯真数据库接口请求成功<br>' . json_encode($test, JSON_UNESCAPED_UNICODE))));
            exit;
            break;

 

5 配置admin-options.php

大家找到/wp-content/themes/zibll/inc/options/admin-options.php这个文件

大概是在 9622 到 9633行 的 内容,替换为下面代码

array(
                'id'      => 'ip_addr_sdk',
                'default' => 'null',
                'title'   => 'IP归属地接口选择',
                'type'    => "radio",
                'inline'  => true,
                'options' => array(
                    'polling' => __('轮流查询', 'zib_language'),
                    'qq'      => __('腾讯位置服务', 'zib_language'),
                    'amap'    => __('高德位置服务', 'zib_language'),
                    'cz'    => __('本地纯真数据库接口(无需配置)', 'zib_language'),
                    'null'    => __('太平洋网络公共接口(无需配置)', 'zib_language'),
                ),

大概是在 9686 到 9697行 的 内容,替换为下面代码

array(
                'content' => '<div><b>填写配置并保存主题配置后可在此测试接口</b></div>
                <ajaxform class="ajax-form" ajax-url="' . admin_url('admin-ajax.php') . '">
                <div class="flex ac hh">
                <select class="mt6 mr10" ajax-name="sdk"><option value="">太平洋网络公共接口</option><option value="cz">本地纯真数据库</option><option value="qq">腾讯位置服务</option><option value="amap">高德位置服务</option></select>
                <input class="mt6 mr10" type="text" style="max-width:300px;" ajax-name="ip" placeholder="输入一个IP地址或留空"><a href="javascript:;" class="but jb-yellow ajax-submit mt6"><i class="fa fa-paper-plane-o"></i> 测试一下</a></div>
                <div class="mt10 ajax-notice"></div>
                <input type="hidden" ajax-name="action" value="test_ip_addr_sdk">
                </ajaxform>',
                'style'   => 'warning',
                'type'    => 'submessage',
            ),

 

 

使用教程

如果,你已经完成上面的操作后,就可以使用了,方法是到你的子比主题设置,到->扩展&增强/ip归属地,就可以看到有一个

  • 一定要完成上面的操作,并且把支持库和qqwry.dat 文件复制好!
  • 如有什么问题,请在评论区指出

效果展示

GPYHQJTGL8MNFZHW1R

VUV8YJPOGLSW8E0G4M

 

请登录后发表评论