摘要:要想透过代理服务器取得客户端的真实地址,就要使用来读取。还有一点需要注意的是如果客户端没有通过代理服务器来访问,那么用取到的值将是空的。获取客户端相关文章获取用户地址通用方法常见安全隐患
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 * @return string */ function get_client_ip() { $realip = ""; if ($_SERVER["HTTP_X_FORWARDED_FOR"] && preg_match("/^([0-9]{1,3}.){3}[0-9]{1,3}$/", $_SERVER["HTTP_X_FORWARDED_FOR"])) { $realip = $_SERVER["HTTP_X_FORWARDED_FOR"]; } else if ($_SERVER["HTTP_CLIENT_IP"] && preg_match("/^([0-9]{1,3}.){3}[0-9]{1,3}$/", $_SERVER["HTTP_CLIENT_IP"])) { $realip = $_SERVER["HTTP_CLIENT_IP"]; } else if($_SERVER["REMOTE_ADDR"] && preg_match("/^([0-9]{1,3}.){3}[0-9]{1,3}$/", $_SERVER["HTTP_CLIENT_IP"])) { $realip = $_SERVER["REMOTE_ADDR"]; } return $realip; }
相关文章:
获取用户Ip地址通用方法常见安全隐患(HTTP_X_FORWARDED_FOR)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/21954.html
摘要:之前的文章可以关注我的面试专栏获取,或者关注我的公众号琉忆编程库查看历史获取。面试时如何给自己添金没接触过支付功能为此特意准备了一篇新手零基础对接境外支付的文章,为你面试添金,关注公众号琉忆编程库,回复,我发给你。 你好,是我琉忆。本篇是本周(2019.2-25至3-1)的最后一篇文章。之前的文章可以关注我的PHP面试专栏获取,或者关注我的公众号琉忆编程库查看历史获取。 我正在segm...
摘要:但是在通过了,等反向代理软件就不能获取到客户端的真实地址了。下面是一个参考获取客户端地址的方法如果使用的是连接池,可以参考使用方法,但这个是经过多级代理的地址,需要自己处理下获取第一个。 showImg(https://segmentfault.com/img/remote/1460000015379119); 在JSP里,获取客户端的IP地址的方法是:request.getRemot...
阅读 715·2023-04-25 19:40
阅读 3374·2023-04-25 17:41
阅读 2976·2021-11-11 11:01
阅读 2523·2019-08-30 15:55
阅读 3200·2019-08-30 15:44
阅读 1337·2019-08-29 14:07
阅读 459·2019-08-29 11:23
阅读 1293·2019-08-27 10:54