神奇的php获取ip问题 本帖最后由 zhoushiyao26 于 2009-12-02 16:41:17 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 PHP读取客户端用户IP的方法 一句话: $_SERVER["REMOTE_ADDR"] 或者: $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"]; 如果想获取真实IP(即使客户用了代理服务器),使用以下函数: <? function iptype1 () { if (getenv("HTTP_CLIENT_IP")) { return getenv("HTTP_CLIENT_IP"); } else { return "none"; } } function iptype2 () { if (getenv("HTTP_X_FORWARDED_FOR")) { return getenv("HTTP_X_FORWARDED_FOR"); } else { return "none"; } } function iptype3 () { if (getenv("REMOTE_ADDR")) { return getenv("REMOTE_ADDR"); } else { return "none"; } } function ip() { $ip1 = iptype1(); $ip2 = iptype2(); $ip3 = iptype3(); if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown") { return $ip1; } elseif (isset($ip2) && $ip2 != "none" && $ip2 != "unknown") { return $ip2; } elseif (isset($ip3) && $ip3 != "none" && $ip3 != "unknown") { return $ip3; } else { return "none"; } } Echo ip(); ?> 搞清楚你自己的网络拓扑,这个和PHP无关 无意中,我也遇到这问题了。访问IP138与写了一个获取IP的php程序,IP地址竟然不一样。用上面的程序获取也一样错误。 长宽是共享IP的。因为这点像花生壳一类的软件根本无法使用!电信的一般不会有这样的问题,但是针对这种共享IP。如果想获取到真实IP,关键点我认为还是在这个IP上。我们自己在本机上看的IP。也许未必是自己的真实IP。出口点和分配到本机上的未必一样,核心我认为是共享IP与独立IP的区别!我个人是这样猜测的。 【百度分享】MySQL 5.1分区技术初探(二) php mysql 多表查询 查询不出结果? php的基础部分学完了,下面该杂学呢? 求:N个结构相同表与另一个不同表关联取法 怎么样加密音乐播放地址。而不被别人下载! 如何判断浏览器是否支持iframe minij2ee常见问题(FAQ) 密码登陆怎样做(通过session)! phpmyadmin求解~谢谢! PHP正则匹配HREF smarty循环控制问题 急!!! 求助一个php和正则表达式的问题~
一句话:
$_SERVER["REMOTE_ADDR"] 或者:
$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"]; 如果想获取真实IP(即使客户用了代理服务器),使用以下函数: <?
function iptype1 () {
if (getenv("HTTP_CLIENT_IP")) {
return getenv("HTTP_CLIENT_IP");
}
else {
return "none";
}
}
function iptype2 () {
if (getenv("HTTP_X_FORWARDED_FOR")) {
return getenv("HTTP_X_FORWARDED_FOR");
}
else {
return "none";
}
}
function iptype3 () {
if (getenv("REMOTE_ADDR")) {
return getenv("REMOTE_ADDR");
}
else {
return "none";
}
}
function ip() {
$ip1 = iptype1();
$ip2 = iptype2();
$ip3 = iptype3();
if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown") {
return $ip1;
}
elseif (isset($ip2) && $ip2 != "none" && $ip2 != "unknown") {
return $ip2;
}
elseif (isset($ip3) && $ip3 != "none" && $ip3 != "unknown") {
return $ip3;
}
else {
return "none";
}
} Echo ip();
?>
访问IP138与写了一个获取IP的php程序,IP地址竟然不一样。用上面的程序获取也一样错误。