扫盲 2026.11.04 16:34 14 次浏览 0 条评论

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

行思随记

欢迎来到:行思随记