簡體   English   中英

PHP函數同時顯示ipv4 ipv6

[英]PHP function to show both ipv4 ipv6

我將服務器配置為雙堆棧,同時允許ipv4和ipv6。 然后,我想創建一個php頁面,以顯示客戶端計算機是否正在通過ipv4,ipv6或兩者進行連接。

我也嘗試了$ _SERVER ['REMOTE_ADDR']和getenvbyhost(“ REMOTE_ADDR”),但它只返回一個或另一個,而不返回兩者。

我也嘗試了下面的代碼

 function isIPv6($ip) {

   if(filter_var($ip, FILTER_VALIDATE_IP)) {

     if(filter_var($ip, FILTER_FLAG_IPV6)) {
       //It is IPv6 indeed.
     } else {
       //It is IPv4
     }

   } else {
     // Not a valid IP
   }
}

是否可以從服務器獲取兩個IP?

每個傳入請求都使用IPv4或IPv6,但不能同時使用兩者。 如果您想兩者都知道,則需要使用不同的協議觸發與服務器的多個連接。

執行此操作的最常見方法是創建兩個額外的主機名:一個僅包含服務器的IPv4地址,另一個僅包含服務器的IPv6地址。 然后,為您的答復(假設HTML)生成一個唯一的代碼,並在頁面中包含兩個隱藏的圖像。 一種使用僅IPv4主機名,另一種使用僅IPv6主機名。 兩者都包含您在URL中生成的唯一代碼,因此客戶端不會緩存圖像,並且您可以看到哪些圖像請求屬於同一類。

這是一件很麻煩的事情,在大多數情況下都不值得付出努力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM