PHP获取客户端的IP地址

Posted 心之所依

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP获取客户端的IP地址相关的知识,希望对你有一定的参考价值。

首先我们来了解相关变量的含义:

$_SERVER[‘REMOTE_ADDR‘]:浏览当前页面的用户计算机的ip地址
$_SERVER[‘HTTP_CLIENT_IP‘]:客户端的ip
$_SERVER[‘HTTP_X_FORWARDED_FOR‘]:浏览当前页面的用户计算机的网关
$_SERVER[‘HTTP_X_REAL_IP‘]:nginx 代理模式下,获取客户端真实IP

下面我们通过简单的代码示例来介绍php获取客户端IP地址的方法。
/**
 *  获取客户端IP地址
 */
function real_ip()
{

    $ip = $_SERVER[‘REMOTE_ADDR‘];
    if (isset($_SERVER[‘HTTP_X_FORWARDED_FOR‘]) && preg_match_all(‘#d{1,3}.d{1,3}.d{1,3}.d{1,3}#s‘, $_SERVER[‘HTTP_X_FORWARDED_FOR‘], $matches)) {
        foreach ($matches[0] AS $xip) {
            if (!preg_match(‘#^(10|172.16|192.168).#‘, $xip)) {
                $ip = $xip;
                break;
            }
        }
    } elseif (isset($_SERVER[‘HTTP_CLIENT_IP‘]) && preg_match(‘/^([0-9]{1,3}.){3}[0-9]{1,3}$/‘, $_SERVER[‘HTTP_CLIENT_IP‘])) {
        $ip = $_SERVER[‘HTTP_CLIENT_IP‘];
    } elseif (isset($_SERVER[‘HTTP_CF_CONNECTING_IP‘]) && preg_match(‘/^([0-9]{1,3}.){3}[0-9]{1,3}$/‘, $_SERVER[‘HTTP_CF_CONNECTING_IP‘])) {
        $ip = $_SERVER[‘HTTP_CF_CONNECTING_IP‘];
    } elseif (isset($_SERVER[‘HTTP_X_REAL_IP‘]) && preg_match(‘/^([0-9]{1,3}.){3}[0-9]{1,3}$/‘, $_SERVER[‘HTTP_X_REAL_IP‘])) {
        $ip = $_SERVER[‘HTTP_X_REAL_IP‘];
    }
    return $ip;
}

以上是关于PHP获取客户端的IP地址的主要内容,如果未能解决你的问题,请参考以下文章

php获取客户端公网ip代码

PHP 获取客户端的真实IP地址

如何在 PHP 中获取已连接客户端的 MAC 和 IP 地址?

如何使用php获取客户端的本地IP?

php根据ip地址查地区

php怎样获取客户端电脑物理地址