我需要创建一个简单的网页,只在浏览器窗口中显示一些人的公共IPV4地址


I need to create a simple webpage that only shows someones public IPV4 address in their browser window

我想要做的是创建一个简单的页面,可能是在php中,它只显示IPV4地址。

它应该看起来像这个网站"http://myexternalip.com/raw"但不显示仅IPV6的IPV4。

这个网站显示我的IPV6地址,我知道我两者都在工作,因为Whatsmyip.com显示我的IPv4。

谢谢大家的帮助!

获取访问者/客户端IP地址的最简单方法是使用$_SERVER['REMOTE_ADDR']或$_SERVER['REMOTE_HOST']变量。

然而,有时这不会返回访问者的正确IP地址,因此我们可以使用其他一些服务器变量来获取IP地址。

以下两个函数的等效之处仅在于检索值的方式和位置。

getenv()用于获取PHP中环境变量的值。

// Function to get the client IP address
function get_client_ip() {
    $ipaddress = '';
    if (getenv('HTTP_CLIENT_IP'))
        $ipaddress = getenv('HTTP_CLIENT_IP');
    else if(getenv('HTTP_X_FORWARDED_FOR'))
        $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
    else if(getenv('HTTP_X_FORWARDED'))
        $ipaddress = getenv('HTTP_X_FORWARDED');
    else if(getenv('HTTP_FORWARDED_FOR'))
        $ipaddress = getenv('HTTP_FORWARDED_FOR');
    else if(getenv('HTTP_FORWARDED'))
        $ipaddress = getenv('HTTP_FORWARDED');
    else if(getenv('REMOTE_ADDR'))
        $ipaddress = getenv('REMOTE_ADDR');
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}

$_SERVER是一个数组,包含web服务器创建的服务器变量。

// Function to get the client IP address
function get_client_ip() {
    $ipaddress = '';
    if ($_SERVER['HTTP_CLIENT_IP'])
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    else if($_SERVER['HTTP_X_FORWARDED_FOR'])
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if($_SERVER['HTTP_X_FORWARDED'])
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if($_SERVER['HTTP_FORWARDED_FOR'])
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if($_SERVER['HTTP_FORWARDED'])
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else if($_SERVER['REMOTE_ADDR'])
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}

创建一个ip.php文件并在其中放入以下代码:

<?php
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
  $ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
  $ip = $_SERVER['REMOTE_ADDR'];
}
echo $ip;

我的回答是基于对一个类似问题的回答:https://stackoverflow.com/a/55790/326016