如何通过PHP获取客户端和服务器的真实IP地址?

PHP中获取客户端的真实IP地址和服务器的IP地址可以通过以下方法实现。

如何通过PHP获取客户端和服务器的真实IP地址?插图1

获取客户端真实IP地址

要获取客户端的真实IP地址,可以使用$_SERVER 超全局变量中的REMOTE_ADDR 键,由于代理服务器、负载均衡器等的存在,直接使用REMOTE_ADDR 可能无法获取到真实的客户端IP地址,通常需要检查一些常见的HTTP头信息,如X-Forwarded-ForHTTP_CLIENT_IP

function getClientIP() {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        // 从 HTTP_CLIENT_IP 获取 IP
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        // 从 X-Forwarded-For 获取 IP
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        // 默认从 REMOTE_ADDR 获取 IP
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}
echo "客户端IP: " . getClientIP();

获取服务器IP地址

要获取服务器的IP地址,可以使用gethostbyname 函数来解析服务器的主机名。

function getServerIP() {
    return gethostbyname($_SERVER['SERVER_NAME']);
}
echo "服务器IP: " . getServerIP();

综合示例

以下是一个完整的示例,展示了如何同时获取客户端的真实IP地址和服务器的IP地址:

如何通过PHP获取客户端和服务器的真实IP地址?插图3

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>获取客户端和服务器IP</title>
</head>
<body>
    <h3>获取客户端和服务器IP</h3>
    <table border="1">
        <tr>
            <th>类型</th>
            <th>IP地址</th>
        </tr>
        <tr>
            <td>客户端IP</td>
            <td><?php echo getClientIP(); ?></td>
        </tr>
        <tr>
            <td>服务器IP</td>
            <td><?php echo getServerIP(); ?></td>
        </tr>
    </table>
</body>
</html>
<?php
function getClientIP() {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}
function getServerIP() {
    return gethostbyname($_SERVER['SERVER_NAME']);
}
?>

注意事项

1、安全性:不要完全信任任何来自客户端的IP地址,因为HTTP头信息可以被伪造。

2、多级代理:如果存在多级代理,X-Forwarded-For 可能包含多个IP地址,用逗号分隔,在这种情况下,第一个IP地址通常是客户端的真实IP。

3、负载均衡器:在使用负载均衡器时,确保正确配置以传递客户端的真实IP地址。

如何通过PHP获取客户端和服务器的真实IP地址?插图5

各位小伙伴们,我刚刚为大家分享了有关php获取客户端ip和服务器ip_获取客户端真实IP的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!

本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/90528.html

小末小末
上一篇 2024年11月5日 10:57
下一篇 2024年11月5日 11:06

相关推荐