WHMCS 根据客户的 IP 地址来自动填充客户资料

在登录时,自动为你的客户填充资料。

所用到的开源项目:https://github.com/zoujingli/ip2region

此功能可以在用户注册或登录的时候,自动根据用户的 IP 的地址来填充客户的地址字段。

此功能是完全离线的,所以数据比较少,但是也避免了网络 API 请求。

当然你也可以对接其他 API,这样甚至能精确到街道和邮政编码。

WHMCS HOOK

在此之前,您需要先引入 Ip2Region 类。

use WHMCS\Authentication\CurrentUser;

function updateClientInfo()
{
    $ip = $_SERVER['REMOTE_ADDR'];

    $ip2region = new Ip2Region();

    $geo = $ip2region->memorySearch($ip);
    $arr = explode('|', str_replace(['0|'], '|', isset($geo['region']) ? $geo['region'] : ''));

    $country = $arr[0];
    $province = $arr[2];
    $city = $arr[3];
    $isp = $arr[4];

    // 释放资源
    unset($ip2region);

    $currentUser = new CurrentUser();
    $selectedClient = $currentUser->client();

    if (!is_null($selectedClient)) {
        if ($selectedClient->state == '') {
            $selectedClient->state = $province;
        }

        if ($selectedClient->city == '') {
            $selectedClient->city = $city;
        }

        $selectedClient->save();
    }

    return [
        'country' => $country,
        'province' => $province,
        'city' => $city,
        'isp' => $isp,
    ];
}

// 添加 Hook
add_hook('ClientAreaRegister', 1, 'updateClientInfo');
add_hook('UserLogin', 1, 'updateClientInfo');

下载全部代码

https://github.com/iVampireSP/whmcs-auto-fill-client-address-by-ip

取得联系