【问题标题】:Get Client Ip in Symfony2在 Symfony2 中获取客户端 IP
【发布时间】:2015-06-06 06:19:24
【问题描述】:

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

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

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

谢谢

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

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

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

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

【问题讨论】:

标签: php symfony


【解决方案1】:

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

【讨论】:

  • 但是用户同时拥有 ipv6 和 ipv4,对吗?是什么决定了用户连接哪个 ip?服务器?
  • 不,服务器知道的IP地址是客户端连接的IP地址。通常,套接字的端点位于一个 IP 地址的一个端口上,而另一端只知道这一点。要从客户端获取两个 IP 地址,客户端必须明确将其发送给您。
  • 你的解释很有道理,而且可能是真的,但我有一种情况,不知何故,我让 symfony 得到了 ipv4 而不是 ipv6,显然,只是其中一个(因为,就像你说,不可能同时得到),但我不知道是什么让symfony得到ipv4。有没有办法根据请求打开/关闭 ipv6 支持?
  • 抱歉,造成混乱,显然,你是对的,问题实际上是我老板的错误造成的,或者可能只是笨拙,谁知道,他在 Cloudflare 中打开了“仅 IPv6”选项.. . 我的错。
猜你喜欢
  • 2016-10-07
  • 2020-11-10
  • 2020-12-08
  • 1970-01-01
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 2013-10-16
相关资源
最近更新 更多