在php 中使用 $_server[remote_addr] 来取得客户端的 ip 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 ip 地址,而不是真正的客户端 ip 地址。要想透过代理服务器取得客户端的真实 ip 地址,就要使用 $_server[http_x_forwarded_for] 来读取
(1).remote_addr:浏览当前页面的用户计算机的ip地址
(2).http_x_forwarded_for: 浏览当前页面的用户计算机的网关
(3).http_client_ip:客户端的ip
在php 中使用 $_server[remote_addr] 来取得客户端的 ip 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 ip 地址,而不是真正的客户端 ip 地址。要想透过代理服务器取得客户端的真实 ip 地址,就要使用 $_server[http_x_forwarded_for] 来读取。
不过要注意的事,并不是每个代理服务器都能用 $_server[http_x_forwarded_for] 来读取客户端的真实 ip,有些用此方法读取到的仍然是代理服务器的 ip。
还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用$_server[http_x_forwarded_for] 取到的值将是空的。
实例
//经过复杂的判断与算是的获取ip地址函数
function getip() { if (getenv('http_client_ip')) { $ip = getenv('http_client_ip'); } elseif (getenv('http_x_forwarded_for')) { $ip = getenv('http_x_forwarded_for'); } elseif (getenv('http_x_forwarded')) { $ip = getenv('http_x_forwarded'); } elseif (getenv('http_forwarded_for')) { $ip = getenv('http_forwarded_for'); } elseif (getenv('http_forwarded')) { $ip = getenv('http_forwarded'); } else { $ip = $_server['remote_addr']; } return $ip;
更多详细内容请查看:php教程er/21/9a34bfce63448271c7b52fa168c3e40f.htm>http://www.phprm.com/phper/21/9a34bfce63448271c7b52fa168c3e40f.htm
//可以分出内网与外网站ip地址获取程序
function getip_out(){ $ip=false; if(!empty($_server[http_client_ip])){ $ip = $_server[http_client_ip]; } if (!empty($_server['http_x_forwarded_for'])) { $ips教程 = explode (, , $_server['http_x_forwarded_for']); if ($ip) { array_unshift($ips, $ip); $ip = false; } for ($i = 0; $i 更多详细内容请查看:http://www.phprm.com