如何获取客户端的真实IP?NOTIC:[8]Undefinedvariable:ip这个错怎么改?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何获取客户端的真实IP?NOTIC:[8]Undefinedvariable:ip这个错怎么改?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2122字,纯文字阅读大概需要4分钟。
内容图文
![如何获取客户端的真实IP?NOTIC:[8]Undefinedvariable:ip这个错怎么改?](/upload/InfoBanner/zyjiaocheng/153/d18daefa828d409791215b294b0ba6b1.jpg)
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 < $count; $i++) {
if (!preg_match("/^(10|172\.16|192\.168)\./i", $ips[$i])) {//排除局域网ip
$ip = $ips[$i];
break;
}
}
$tip = $ip ? $ip : $_SERVER['REMOTE_ADDR'];
if ($tip == "127.0.0.1") {//获得本地真实IP
return $this -> 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 < $count; $i++) {
if (!preg_match("/^(10|172\.16|192\.168)\./i", $ips[$i])) {//排除局域网ip
$ip = $ips[$i];
break;
}
}
$tip = $ip ? $ip : $_SERVER['REMOTE_ADDR'];
if ($tip == "127.0.0.1") {//获得本地真实IP
return $this -> 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的类库也可以
内容总结
以上是互联网集市为您收集整理的如何获取客户端的真实IP?NOTIC:[8]Undefinedvariable:ip这个错怎么改?全部内容,希望文章能够帮你解决如何获取客户端的真实IP?NOTIC:[8]Undefinedvariable:ip这个错怎么改?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。