2015-04-01 191 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