我正在将服务器配置为双堆栈,同时允许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?
发布于 2015-10-19 20:39:30
每个传入请求都使用IPv4或IPv6,但不能同时使用两者。如果您想知道两者,那么您需要使用不同的协议触发到您的服务器的多个连接。
最常见的方法是创建两个额外的主机名:一个只包含服务器的IPv4地址,另一个仅包含服务器的IPv6地址。然后,对于您的回复(假设是HTML),您将生成一个唯一的代码,并在页面中包含两个隐藏的图像。一个使用仅IPv4主机名,另一个使用仅IPv6主机名。它们都包含您在URL中生成的唯一代码,这样客户机就不会缓存图像,您就可以看到哪些图像请求属于一起。
这是一个相当麻烦的问题,而且对于大多数目的来说,不值得花这么大力气。
https://stackoverflow.com/questions/33214331
复制相似问题