我目前正在建立一个网站,显示访客的IP,包括IPv4和IPv6,但如果访问者同时拥有两个网站,我似乎无法将它们显示在一起。
<p>IPv4: <?php
if(filter_var($getIP, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
echo $remoteIP;
}
else {
echo "N/A";
}
?></p>
<p>IPv6: <?php
if ( ipv6::isIPv6($remoteIP) ) {
echo $remoteIP;
} else {
echo "N/A";
}
?></p>
&#13;
GetIPv6 此代码检查用户是否将IPv6作为其IP
<?php
class ipv6 {
function get_ip() {
return getenv("REMOTE_ADDR");
}
function isIPv6($ip = "") {
if ($ip == "") {
$ip = ipv6::get_ip();
}
if (substr_count($ip,":") > 0 && substr_count($ip,".") == 0) {
return true;
} else {
return false;
}
}
}
$remoteIP= $_SERVER['REMOTE_ADDR'];
GetIPv4
刚刚获得IPv4,最标准的IP
<?PHP
function getUserIP()
{
$client = @$_SERVER['HTTP_CLIENT_IP'];
$forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
$remote = $_SERVER['REMOTE_ADDR'];
if(filter_var($client, FILTER_VALIDATE_IP))
{
$ip = $client;
}
elseif(filter_var($forward, FILTER_VALIDATE_IP))
{
$ip = $forward;
}
else
{
$ip = $remote;
}
return $ip;
}
$getIP = getUserIP();
?>
&#13;
答案 0 :(得分:1)
...但是如果访问者同时拥有两个网站,我似乎无法将它们显示在一起。
那是因为该信息不可用。
REMOTE_ADDR
环境变量只包含一个IP地址 - 访问者用于访问服务器的IP地址。检测其他地址的唯一方法是强制浏览器发出另一个只能通过IPv4(或v6)的请求,例如:通过向没有IPv6(或v4)地址的域发出请求。