欢迎访问宙启技术站
智能推送

带有示例的PHP函数:获取客户端的IP地址

发布时间:2023-07-25 04:16:33

在PHP中,可以使用几种方法来获取客户端的IP地址。以下是一些示例函数:

1. 使用$_SERVER超级全局变量:

function getClientIp() {
    $ipAddress = '';
    
    if (isset($_SERVER['HTTP_CLIENT_IP'])) {
        $ipAddress = $_SERVER['HTTP_CLIENT_IP'];
    } else if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ipAddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else if(isset($_SERVER['HTTP_X_FORWARDED'])) {
        $ipAddress = $_SERVER['HTTP_X_FORWARDED'];
    } else if(isset($_SERVER['HTTP_FORWARDED_FOR'])) {
        $ipAddress = $_SERVER['HTTP_FORWARDED_FOR'];
    } else if(isset($_SERVER['HTTP_FORWARDED'])) {
        $ipAddress = $_SERVER['HTTP_FORWARDED'];
    } else if(isset($_SERVER['REMOTE_ADDR'])) {
        $ipAddress = $_SERVER['REMOTE_ADDR'];
    }
    
    return $ipAddress;
}

以上函数会检查不同的HTTP头信息获取客户端的IP地址,并返回最后一个非空的IP地址。

2. 使用REMOTE_ADDR环境变量:

function getClientIp() {
    return $_SERVER['REMOTE_ADDR'];
}

这种方法通过直接访问$_SERVER['REMOTE_ADDR']来获取客户端的IP地址。

3. 使用HTTP_CLIENT_IP环境变量:

function getClientIp() {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        return $_SERVER['HTTP_CLIENT_IP'];
    } else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        return $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        return $_SERVER['REMOTE_ADDR'];
    }
}

在这个例子中,函数首先检查$_SERVER['HTTP_CLIENT_IP'],然后检查$_SERVER['HTTP_X_FORWARDED_FOR'],最后使用$_SERVER['REMOTE_ADDR']作为备选方案。

4. 使用getenv()函数:

function getClientIp() {
    $ipAddress = '';
    
    if (getenv('HTTP_CLIENT_IP')) {
         $ipAddress = getenv('HTTP_CLIENT_IP');
    } else if(getenv('HTTP_X_FORWARDED_FOR')) {
        $ipAddress = getenv('HTTP_X_FORWARDED_FOR');
    } else if(getenv('HTTP_X_FORWARDED')) {
        $ipAddress = getenv('HTTP_X_FORWARDED');
    } else if(getenv('HTTP_FORWARDED_FOR')) {
        $ipAddress = getenv('HTTP_FORWARDED_FOR');
    } else if(getenv('HTTP_FORWARDED')) {
        $ipAddress = getenv('HTTP_FORWARDED');
    } else if(getenv('REMOTE_ADDR')) {
        $ipAddress = getenv('REMOTE_ADDR');
    }
    
    return $ipAddress;
}

在这个例子中,使用了getenv()函数来获取对应的环境变量值。

这些示例函数中,每个函数都有不同的方式来获取客户端的IP地址,具体要使用哪个函数取决于你的需求和服务器环境。