A-A+
WHMCS自动根据用户IP地址来填充客户资料:对接其他 API能精确到街道和邮政编码
WHMCS Hook
这是一个很简单的 Hook,用于完善你的 WHMCS 功能。
注意:您可以随意修改并二次发布我们的代码。
所用到的开源项目: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,分别是 ClientAreaRegister 和 UserLogin。这意味着,代码将会在用户注册时和登录时执行,分别获取用户的 IP 地址并完成资料更新。
// 添加 Hook add_hook('ClientAreaRegister', 1, 'updateClientInfo'); add_hook('UserLogin', 1, 'updateClientInfo');
应用此代码
VPS全科网【http://vpsqk.com】提示:您可以随意修改并二次发布我们的代码。