现在大部分网站会使用加速,thinkphp6中获取IP的方法 request()->ip获取到的IP会是代理IP,不是真实的。其实想要在thinkphp6中获取真实的IP,只需要在全局的公共文件中加入以下代码。
// 获取真实IP
if (!function_exists("get_real_ip")) {
function get_real_ip()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$cip = $_SERVER['HTTP_CLIENT_IP'];
} else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else if (!empty($_SERVER["REMOTE_ADDR"])) {
$cip = $_SERVER["REMOTE_ADDR"];
} else {
$cip = '';
}
preg_match("/[\d\.]{7,15}/", $cip, $cips);
$cip = isset($cips[0]) ? $cips[0] : 'unknown';
unset($cips);
return $cip;
}
}然后在需要地方调用就可以了。
$ip = get_real_ip();
