据我所知,网络服务器 (Apache/Nginx) 根据请求用户代理的声明位置提供 ($_SERVER['REMOTE_ADDR']
)。所以我知道他们可能在撒谎,但是这个值有可能是空白的吗?网络接口(interface)或网络服务器甚至会接受没有正确形成 IP 的请求吗?
最佳答案
理论上是可以的,这取决于http服务器或者至少是对应的PHP SAPI。
在实践中,除了 CLI SAPI 之外,我还没有遇到过这种情况。
编辑:对于 Apache,这似乎总是设置的,因为 ap_add_common_vars
总是将它添加到最终由 Apache 模块 PHP SAPI 读取的表中(免责声明:我的知识非常有限Apache 内部结构)。
如果在 CGI 环境中使用 PHP,RFC 3875 中的规范似乎保证了此变量的存在:
4.1.8. REMOTE_ADDR The REMOTE_ADDR variable MUST be set to the network address of the client sending the request to the server.
关于php - REMOTE_ADDR 是否可能为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4278982/