请问 PHP 获取客户端 IP,有没有获得空值的情况。

2020-02-12 23:57:57 +08:00
 IDCFAN
在写 IP 查询,不懂标题里写的情况,在犹豫有没有必要加上空值的判断。
3913 次点击
所在节点    PHP
11 条回复
jugelizi
2020-02-13 00:07:50 +08:00
打印 $_SERVER 里面哪个值是 IP 的
qq292382270
2020-02-13 00:12:36 +08:00
没遇到过
wslsq
2020-02-13 00:21:47 +08:00
我真遇到过,觉得是亿万分之一的概率
建议做好 ipv6 兼容就行了
pickcat
2020-02-13 00:24:27 +08:00
太正常了,你要有“客户端一切内容都是假的”的觉悟~
手动狗头.gif
EminemW
2020-02-13 00:33:28 +08:00
“永远不要相信,客户端给的数据"
nifury
2020-02-13 02:30:14 +08:00
https://stackoverflow.com/questions/18005012/php-serverremote-addr-empty
居然还真有可能是空
我觉得还是定义的问题吧,毕竟从理论上来说建立了 http 连接那 socket 四元组就有了吧
yuzo555
2020-02-13 03:24:23 +08:00
REMOTE_ADDR 为空的情况目前没遇到过。
倒是遇到过 REMOTE_ADDR 返回的是保留地址( 100.64.0.0/16 )的情况,这种基本上是运营商私播 IP 导致的。
ysc3839
2020-02-13 03:49:02 +08:00
@yuzo555 这种情况是你服务器通信走了运营商内网吧?不然你怎么发数据回去?
lhx2008
2020-02-13 09:10:39 +08:00
如果是从 socket 拿的不可能为空,但是加预判没什么问题,给一个特殊地址用于排查问题
xiaoyouqiang
2020-02-13 10:53:41 +08:00
为空的情况下,我没遇到过,获取的方法要多重判断,如果客户端有代理等情况,都要判断。最终下来肯定是有地址的。一个数据包在网络上传输,进过各种设备,肯定会有源地址信息。不过地址信息有可能是伪造的倒是真的
yuzo555
2020-02-13 19:06:40 +08:00
@ysc3839 运营商(我遇到的应该是浙江那边华数广电一类的二级运营商)私播 IP + 云服务商(我的案例是阿里云)的 BGP 线路正好在当地有该运营商的线路。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/644167

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX