首页 文章

PHP函数显示ipv4 ipv6

提问于
浏览
1

我正在配置服务器为双栈,允许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
   }
}

是否可以从服务器获取两个ips?

1 回答

  • 4

    每个传入请求都使用IPv4或IPv6,但不能同时使用两者 . 如果您想知道两者,则需要使用不同的协议触发与服务器的多个连接 .

    最常见的方法是创建两个额外的主机名:一个仅包含服务器的IPv4地址,另一个仅包含服务器的IPv6地址 . 然后,对于您的回复(假设为HTML),您将生成唯一代码,并在页面中包含两个隐藏图像 . 一个使用仅IPv4主机名,另一个使用仅IPv6主机名 . 两者都包含您在URL中生成的唯一代码,因此客户端不会缓存图像,您可以查看哪些图像请求属于一起 .

    这是一件非常麻烦的事情,并且在大多数情况下都不值得付出努力 .

相关问题