PHP获取客户端IP方法
最省事的一行代码,直接读服务器变量:
// 客户端和服务器建立连接时的对端地址
$ip = $_SERVER['REMOTE_ADDR'];
echo $ip; // 本机测试一般是 127.0.0.1 或 ::1
但用户走了代理或 CDN 时,REMOTE_ADDR 拿到的是代理的地址,真实 IP 藏在转发头里,这时得这么取:
function getIp() {
// 代理转发头,多个 IP 用逗号隔开,第一个是客户端
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$list = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
return trim($list[0]);
}
// 没有代理就走这里
return $_SERVER['REMOTE_ADDR'] ?? '未知';
}
echo getIp();
HTTP_CLIENT_IP 有些环境会带,多数没有,可写可不写。REMOTE_ADDR 是 TCP 连接对端地址,最实在;转发头是客户端能自己改的,只当参考用,别拿去做权限判断。取到的值记得 trim 一下,防止带空格。
说点什么 0