PHP 获取原始请求 IP:X-Forwarded-For 和 X-Real-IP
在转发 HTTP 请求后,要保证remote_addr
是原始的请求 IP,可以使用 HTTP 头X-Forwarded-For
或X-Real-IP
来传递原始的客户端 IP 地址。这两个头部字段通常由代理服务器添加。//n//n以下是一个示例的 PHP 代码,演示如何获取原始的请求 IP://n//nphp//n// 获取原始的请求 IP//nfunction getOriginalClientIP() {//n /$ip = '';//n//n if (isset(/$_SERVER['HTTP_X_FORWARDED_FOR'])) {//n // 使用 X-Forwarded-For 头部字段//n /$ip = /$_SERVER['HTTP_X_FORWARDED_FOR'];//n } elseif (isset(/$_SERVER['HTTP_X_REAL_IP'])) {//n // 使用 X-Real-IP 头部字段//n /$ip = /$_SERVER['HTTP_X_REAL_IP'];//n } else {//n // 如果没有相应的头部字段,则使用 remote_addr//n /$ip = /$_SERVER['REMOTE_ADDR'];//n }//n//n // 如果 X-Forwarded-For 包含多个 IP 地址,取第一个//n if (strpos(/$ip, ',') !== false) {//n /$ip = explode(',', /$ip)[0];//n }//n//n // 移除 IP 地址中的空格和其他无效字符//n /$ip = trim(/$ip);//n//n return /$ip;//n}//n//n// 使用示例//n/$originalIP = getOriginalClientIP();//necho /'原始的请求 IP 地址是:/'./$originalIP;///n
//n//n在上述示例中,getOriginalClientIP
函数首先检查HTTP_X_FORWARDED_FOR
头部字段,如果存在,就将其值赋给/$ip
变量。如果HTTP_X_FORWARDED_FOR
不存在,就检查HTTP_X_REAL_IP
头部字段,如果存在,也将其值赋给/$ip
变量。如果两个头部字段都不存在,就使用REMOTE_ADDR
作为原始的请求 IP。//n//n然后,函数检查/$ip
变量中是否包含多个 IP 地址,如果是的话,就使用逗号分隔并取第一个 IP 地址。最后,函数去除 IP 地址中的空格和其他无效字符,并返回原始的请求 IP。//n//n你可以根据你的具体需求来选择使用X-Forwarded-For
还是X-Real-IP
头部字段。在使用这些头部字段时,要确保你的代理服务器正确地添加了这些头部字段。
原文地址: http://www.cveoy.top/t/topic/pL5t 著作权归作者所有。请勿转载和采集!