我有一个脚本,它向另一台服务器发送请求,但问题是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;
}
Run Code Online (Sandbox Code Playgroud)
但是这个函数只返回一个IPv地址。我怎样才能获得所有时间IPv4或获得两个地址?
你不能。
只有请求来自的 IP 地址可用。
没有可靠的方法来识别路由到同一台计算机的其他 IP 地址(我的笔记本电脑目前有 12 个 IP 地址)。
客户端将仅使用一种协议向您的服务器发送请求。它不会同时使用IPv4 和 IPv6发送请求,并且无法交错两种协议,并且 IPv4 地址也不会转换为等效的 IPv6 地址。如果客户端使用 IPv4 发送请求,那么您将获得 IPv4 地址。如果他们使用 IPv6 发送请求,您将获得 IPv6 地址。时期。故事结局。
如果您需要IPv4 地址,则必须在服务器/DNS 条目上禁用 IPv6 支持,因此所有客户端都被迫使用 IPv4 作为唯一可用的协议。但这在当今时代也将是可怕的倒退。
| 归档时间: |
|
| 查看次数: |
10998 次 |
| 最近记录: |