获取客户端 IP 地址的 PHP 程序


2023年10月21日, Learn eTutorial
1868

什么是 IP 地址?

IP 地址是 一个独特的地址(数字标签),用于识别互联网或本地网络上的设备。IP 代表“互联网协议”,这是一组规则,它们形成一种格式,用于使用互联网发送信息。 

IP 地址具有两个不同的功能

  • 主机识别 
  • 位置寻址

IP 地址中的 IPv4 和 IPv6 是什么?

互联网协议版本 4 (IPv4) 将 IP 地址定义为 32 位数字。然而,随着互联网使用的增加和可用 IPv4 地址的短缺,开始使用新版本的 IP,称为版本 6,IPv6。IPv6 使用 128 位作为 IP 地址,于 1995 年开发,并于 1998 年 12 月标准化。

IP 地址如何表示?

通常,IP 地址以人类可读的格式书写,例如 IPv4 中的 172.16.254.2 和 IPv6 中的 2001:db8:0:1234:0:567:8:1。

谁负责维护 IP 地址?

IANA (Internet Assigned Numbers Authority) 是全球管理 IP 地址的国际机构,也由五个区域互联网注册机构管理。这些是向其区域互联网服务提供商 (ISP) 提供 IP 地址的机构。 每个 ISP 会为其连接到其网络的每个设备分配一个 IP 地址。

如何使用 PHP 程序获取客户端 IP 地址?

在 PHP 中获取使用网站的用户 IP 地址非常简单,因为 PHP 提供了一个名为 PHP $_SERVER 的变量,可以轻松获取用户的 IP。我们可以使用此变量来检查谁正在使用我们的网站以及是否有人在我们的网站上做任何错误的事情。

在此 PHP 程序中,我们首先必须检查此 IP 地址的来源:

首先,我们必须检查它是否来自共享互联网,如果是,我们必须使用 HTTP_CLIENT_IP PHP $_SERVER 变量将 IP 地址获取到变量中

$ip_address = $_SERVER['HTTP_CLIENT_IP'];

其次,我们必须检查 IP 地址是否来自代理服务器,如果是,我们必须使用 HTTP_X_FORWARDED_FORPHP $_SERVER 变量将 IP 地址获取到变量中 

$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];  

获取访问者远程 IP 地址的第三种方法是使用 REMOTE_ADDR我们正在使用查询  

$ip_address = $_SERVER['REMOTE_ADDR'];

获取用户的远程 IP 地址并将其保存到 变量 中。

最后,我们必须 echo 包含用户 IP 地址的变量。

算法

步骤 1: 检查 IP 是否来自共享互联网,然后将 IP 分配给变量。

步骤 2: 检查 IP 是否来自代理,然后将 IP 分配给变量。

步骤 3: 检查 IP 是否来自远程地址,然后将 IP 分配给变量。

步骤 4: 显示变量的值。

PHP 源代码

                                          <?php
//check whether ip is from shared internet
if (!empty($_SERVER['HTTP_CLIENT_IP']))   
  {
    $ip_address = $_SERVER['HTTP_CLIENT_IP'];
  }
//check whether ip is from proxy
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))  
  {
    $ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
  }
//whether ip is from remote address
else
  {
    $ip_address = $_SERVER['REMOTE_ADDR'];
  }
echo $ip_address;
?>
                                      

输出

192.168.1.120