您好,欢迎访问一九零五行业门户网

获取客户端的真实ip地址的php实现方法与原理

在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

其它类似信息

推荐信息