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

如何获取客户端的真实IP? NOTIC: [8] Undefined variable: ip 这个错怎么改?

http_client_ip
http_x_forward_ip
remote_addr
依次探测? 还是有其他方法? 除了ip138?
下面的写法,用最严格的语法来看,有哪里不对,要怎么改?
function getip() { if (!empty($_server[http_client_ip])) { $ip = $_server[http_client_ip]; } if (!empty($_server['http_x_forwarded_for'])) {//获取代理ip $ips = explode(',', $_server['http_x_forwarded_for']); } if ($ip) { $ips = array_unshift($ips, $ip); } $count = count($ips); for ($i = 0; $i get_onlineip(); } else { return $tip; } }

或者用下面的函数?
// 定义一个函数getip() function getip() { global $ip; if (getenv(http_client_ip)) $ip = getenv(http_client_ip); else if(getenv(http_x_forwarded_for)) $ip = getenv(http_x_forwarded_for); else if(getenv(remote_addr)) $ip = getenv(remote_addr); else $ip = unknow; return $ip; }

回复内容: http_client_ip
http_x_forward_ip
remote_addr
依次探测? 还是有其他方法? 除了ip138?
下面的写法,用最严格的语法来看,有哪里不对,要怎么改?
function getip() { if (!empty($_server[http_client_ip])) { $ip = $_server[http_client_ip]; } if (!empty($_server['http_x_forwarded_for'])) {//获取代理ip $ips = explode(',', $_server['http_x_forwarded_for']); } if ($ip) { $ips = array_unshift($ips, $ip); } $count = count($ips); for ($i = 0; $i get_onlineip(); } else { return $tip; } }

或者用下面的函数?
// 定义一个函数getip() function getip() { global $ip; if (getenv(http_client_ip)) $ip = getenv(http_client_ip); else if(getenv(http_x_forwarded_for)) $ip = getenv(http_x_forwarded_for); else if(getenv(remote_addr)) $ip = getenv(remote_addr); else $ip = unknow; return $ip; }

目前来说这种方式是最保险的。
ip138只能拿到访问者的ip,如果是服务器访问,就是服务器的ip
目前对这方面需求没有过多研究,正常工作中是使用依次探测的方式获取。
其实普通用户是不会刻意隐藏自己ip的. 也不会通过好几层的代理去访问你的服务. 所以依次判断这三个其实就可以了. 对普通用户而言, 这三个能拿到的ip的真实度也是蛮高的.
这个问题问的好,这个真不是个简简单单就能搞定的,客户端ip有些是存在欺骗和代理的问题,所以在获取的时候不是百分百的就能获取到的。不过如其他网友所说普通用户用代理什么的还是很少的。相信自己用自己的方法就可以,或者参考其他第三方获取ip的类库也可以
其它类似信息

推荐信息