在 Symfony2 中获取客户端 IP

use*_*173 2 php symfony

我已经搜索过,但似乎无法找到这个简单问题的答案:

我如何强制 symfony 给我用户 ip 的 ipv4 版本,或者我错过了什么?

我可以同时获得 ipv4 和 ipv6 吗?

谢谢

编辑:我的问题是不同的,因为我不想获取任何 ip,我知道 getClientIP 函数(这就是它在标题中的原因),我希望该函数返回 ipv4 和 ipv6 版本的 ip。(或任何功能,以任何方式同时获得 ipv4 和 ipv6 )

Edit2:这就是我现在获得 ip 的方式:

public function getUserIp()
{
    return $this->request->getClientIp();
}
Run Code Online (Sandbox Code Playgroud)

它只返回 ipv6。(这个函数是从我自己的 UserManager 内部运行的,它在每次调用时检查和更新当前用户,通过将事件插入控制器输入部分 symfony 管道)

小智 5

如果用户使用 IPv6 连接,则没有 IPv4 地址可显示,反之亦然。您始终只能获得一个版本的 IP。

  • 不,服务器知道的 IP 地址是客户端连接的 IP 地址。通常,套接字的端点位于一个 IP 地址的一个端口上,而这就是另一端所知道的全部内容。要从客户端获取这两个 IP 地址,客户端必须明确地将其发送给您。 (2认同)