我有一个向其他服务器发送请求的脚本,但是问题是IPv6
不被支持,所以如果我发送IPv6
则给出错误,所以我需要以下两个之一:
IPv4
地址
或IPv4
和IPv6
地址我使用此代码来获取IP
地址
function getRealIP()
{
if (isset($_SERVER["HTTP_CLIENT_IP"])) {
$ip = $_SERVER["HTTP_CLIENT_IP"];
} elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} elseif (isset($_SERVER["HTTP_X_FORWARDED"])) {
$ip = $_SERVER["HTTP_X_FORWARDED"];
} elseif (isset($_SERVER["HTTP_FORWARDED_FOR"])) {
$ip = $_SERVER["HTTP_FORWARDED_FOR"];
} elseif (isset($_SERVER["HTTP_FORWARDED"])) {
$ip = $_SERVER["HTTP_FORWARDED"];
} else {
$ip = $_SERVER["REMOTE_ADDR"];
}
// Strip any secondary IP etc from the IP address
if (strpos($ip, ',') > 0) {
$ip = substr($ip, 0, strpos($ip, ','));
}
return $ip;
}
但是此函数仅返回一个IPv
地址。如何获得所有时间IPv4
或同时获得两个地址?
答案 0 :(得分:4)
你不能。
只有来自请求的IP地址可用。
没有可靠的方法来识别路由到同一台计算机的其他IP地址(我的笔记本电脑当前有12个IP地址)。
答案 1 :(得分:3)
客户端将仅使用一种协议将请求发送到您的服务器。它不会同时使用和 IPv4和IPv6发送请求,并且无法交错两种协议,并且IPv4地址也不会转换为等效的IPv6地址。如果客户端使用IPv4发送了请求,则您将获得IPv4地址。如果他们使用IPv6发送了请求,您将获得IPv6地址。期。故事结束。
如果需要一个IPv4地址,则必须在服务器/ DNS条目上禁用IPv6支持,因此所有客户端都必须使用IPv4作为唯一可用的协议。但这也将是当今时代倒退的可怕一步。