在PHP中获取客户端的真实IP地址和服务器的IP地址可以通过以下方法实现。
获取客户端真实IP地址
要获取客户端的真实IP地址,可以使用$_SERVER
超全局变量中的REMOTE_ADDR
键,由于代理服务器、负载均衡器等的存在,直接使用REMOTE_ADDR
可能无法获取到真实的客户端IP地址,通常需要检查一些常见的HTTP头信息,如X-Forwarded-For
或HTTP_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地址:
<!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和服务器ip_获取客户端真实IP的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/90528.html