关于真实IP获取的错误

okgef 2016-08-21 09:04:05
一文件中用获取真实ip的代码,奇怪的是为什么会有时却会获取到来自这样的IP
10.31.135.3本地局域网 (查看了一下网站日志,却发现有一个外网的IP呀,文件却记录成了这个本地局域网IP)
我的代码是这样的,是否以下的代码还有错误?
function getIPaddress(){
$IPaddress = '';
if (isset($_SERVER)){
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$IPaddress = $_SERVER["HTTP_X_FORWARDED_FOR"];
}else if (isset($_SERVER["HTTP_CLIENT_IP"])){
$IPaddress = $_SERVER["HTTP_CLIENT_IP"];
}else{
$IPaddress = $_SERVER["REMOTE_ADDR"];
}
}else{
if (getenv("HTTP_X_FORWARDED_FOR")){
$IPaddress = getenv("HTTP_X_FORWARDED_FOR");
}else if (getenv("HTTP_CLIENT_IP")){
$IPaddress = getenv("HTTP_CLIENT_IP");
}else{
$IPaddress = getenv("REMOTE_ADDR");
}
}
return $IPaddress;
}
...全文
247 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
justS0 2016-08-24
  • 打赏
  • 举报
回复
应该跟你的网站配置有关 你外层是否有cdn 域名直接解析到指定ip了?还是怎么配置的
关山路遥 2016-08-23
  • 打赏
  • 举报
回复
给楼主提供一个思路,我没有环境验证所想,建议楼主把HTTP_X_FORWARDED_FOR别放在第一个试试,
关山路遥 2016-08-23
  • 打赏
  • 举报
回复
X-Forwarded-For: client1, proxy1, proxy2, proxy3 的格式是这样的,我猜测楼主用了代理,而且请求的全过程有多个代理或者负载均衡器,这样获取HTTP_X_FORWARDED_FOR是获取的最新的代理,也就是本地代理,如果在本地访问这个接口,只有一个代理的话,获取的就是真实的ip
okgef 2016-08-23
  • 打赏
  • 举报
回复
谁能帮忙一下

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧