2015-04-01 120 views
0

我已搜查,但似乎无法找到一个回答这个简单的问题:获取客户端IP中的Symfony2

如何强制symfony的给我用户的IP的IPv4版本,还是我失去了一些东西?

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

感谢

编辑:我的问题是不同的,因为我不想让任何IP,我知道该功能getClientIP的(这就是为什么它是在标题),我希望函数返回一个IPv4和ipv6版本的ip。 (或任何功能,没有办法让两者IPv4和IPv6)

EDIT2:这是我如何获得IP现在:

public function getUserIp() 
{ 
    return $this->request->getClientIp(); 
} 

和独有的IPv6返回。 (此功能从我自己的UserManager内部运行,通过将事件插入到控制器输入部分symfony管道中来检查和更新当前用户)

+0

你能告诉我们你试过了什么吗? – Daan 2015-04-01 14:33:16

+4

[我如何在Symfony2控制器中获取用户IP地址?](http://stackoverflow.com/questions/9029757/how-do-i-get-the-user-ip-address-in-symfony2 - 控制器) – D4V1D 2015-04-01 14:37:05

+0

编辑,说明。 – user1494173 2015-04-01 16:03:05

回答

4

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

+0

但用户有ipv6和ipv4,对吗?什么决定了用户连接哪个ip?服务器 ? – user1494173 2015-04-01 16:11:46

+1

不,服务器知道的IP地址是客户端连接的IP地址。通常,套接字的端点位于一个IP地址的一个端口上,这就是另一端知道的全部内容。要从客户端获得这两个IP地址,客户端必须明确地将其发送给您。 – Daniel 2015-04-02 01:00:40

+0

你的解释是有道理的,它可能是真的,但我有一种情况,在某种程度上,我让symfony获得了ipv4而不是ipv6,显然,其中只有一个(因为就像你说的那样,不可能获得两者),但我不知道是什么让symfony获得ipv4。有没有办法打开/关闭每个请求的ipv6支持? – user1494173 2015-04-03 12:26:00