首页  >  文章  >  后端开发  >  在 PHP 中获取 IP 地址

在 PHP 中获取 IP 地址

PHPz
PHPz原创
2024-08-29 13:07:16457浏览

要学习“在 PHP 中获取 IP 地址”,首先我们将研究 IP 地址。 IP 地址或互联网协议地址是连接到网络的每个系统或设备都具有的数字地址或标签的地址。 IP 地址被分配给每个此类设备。这些设备使用互联网协议进行任何类型的通信。

广告 该类别中的热门课程 PHP 开发人员 - 专业化 | 8 门课程系列 | 3次模拟测试

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

IP版本

以下几点解释IP版本:

  • IP版本是根据互联网协议标签的位来定义的。例如,早期版本的IPv4定义了32位数字的互联网协议地址。随着互联网的发展,IPv6应运而生,它定义了128位数字的IP标签。 IPv6 从 1995 年开始使用至今。互联网协议地址是用人类可以理解的语言编写的。 IPv4 的示例如下:170.17.260.2,IPv6 的示例为 2001:db8:2:1434:1:587:5:2。
  • 互联网协议地址获取的空间是全局管理的。称为互联网号码分配机构的注册机构以及其他五个区域注册机构使互联网协议地址的空间管理成为可能。 IANA 负责向其指定区域或领土内的所有最终用户和其他互联网提供商分配和管理互联网协议地址空间。同样,连接到互联网服务提供商网络的所有设备都被分配一个唯一的互联网协议地址。
  • 有不经常更改的静态互联网协议地址,它们被提供给服务器。互联网服务提供商为使用调制解调器的机器提供特定且唯一的互联网协议地址。该 IP 地址对于一次会话来说是唯一的,并且可能会在下一次会话中发生变化。

在 PHP 中识别并返回 IP 地址

出于安全原因,网站收集其网站访问者的 IP 地址。有一个简单的方法可以在 PHP 中获取该地址。 PHP 中有一个特定的数组可以帮助并返回您机器的 IP 地址。数组称为“$_SERVER”。它包含有关路径、标头和脚本位置的信息。 Web 服务器创建 $_SERVER 数组所需的信息。有时,服务器不会创建或提供阵列所需的所有信息,它们可能会省略其中一些信息。因此,在这种情况下可以使用另一个数组。它被写为“SERVER_ADDR”。该数组返回运行脚本的服务器的 IP 地址。

在 PHP 中获取 IP 地址的方法

下面是在 php 中获取 IP 地址的示例:

示例#1

最简单的方法是使用 $_SERVER 和 ‘REMOTE_ADDR’,它将返回当前正在查看该页面的用户的 IP 地址。

  • 在 PHP 中使用 [‘REMOTE_ADDR’] 识别服务器 IP 地址的示例。

代码:

<?php
echo 'User IP - '.$_SERVER['REMOTE_ADDR'];
?>

输出:

在 PHP 中获取 IP 地址

示例#2

另一种方法,称为“SERVER_ADDR”,也用于检索服务器的 IP 地址。 

  • 在 PHP 中使用 [‘SERVER_ADDR’] 识别服务器 IP 地址的示例。

代码:

<?php
// PHP program to retrieve server’s Internet Protocol address
// Creating a variable to store the server address
$ip_server = $_SERVER['SERVER_ADDR'];
// Displaying the retrieved address
echo "Server IP Address is: $ip_server";
?>

输出:

在 PHP 中获取 IP 地址

对上述程序的说明:上面的示例数组 [$_SERVER] 很有帮助,因为机器未通过代理连接。如果机器通过代理服务器连接到互联网,PHP 中的 $_SERVER[‘REMOTE_ADDR’] 不会返回正确的 IP 地址。它只返回代理服务器和用户或客户端计算机的 IP 地址。在这种情况下,可以使用另一种方法来检索正确的地址。

示例 #3

以下示例用于返回正确且真实的 IP 地址,即使计算机隐藏在代理服务器后面。它使用一对额外的 SERVER 变量,可用于获取客户端系统或计算机的确切 IP 地址。它们被称为 HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR。

  • 使用 [‘HTTP_CLIENT_IP’] 和 [‘HTTP_X_FORWARDED_FOR’] 在 PHP 中识别服务器 IP 地址的示例。

代码:

<?php
function RetrieveUserIP()
{
if(!empty($_SERVER['HTTP_CLIENT_IP']))
{
$address=$_SERVER['HTTP_CLIENT_IP'];
}
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$address=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$address=$_SERVER['REMOTE_ADDR'];
}
return $address;
}
echo 'User IP Address is'.RetrieveUserIP();
?>

输出:

在 PHP 中获取 IP 地址

如果想了解上述代码的动作流程,可以参考下面的流程图。

在 PHP 中获取 IP 地址

对上述程序的说明:上面检索 IP 地址的示例使用两个变量,[‘HTTP_CLIENT_IP’] 和 [‘HTTP_X_FORWARDED_FOR’]。在程序中,我们第一次尝试使用 HTTP_CLIENT_IP 直接将其从机器上获取。如果不可用,我们会尝试使用 HTTP_X_FORWARDD_FOR 来“转发”IP。当两个条件都为空时,我们尝试使用 REMOTE_ADDR 变量获取 IP 地址。

需要记住的要点

在 php 中获取 IP 地址需要记住以下几点:

1.当我们运行上面的代码时,返回的IP地址显示为::1。这称为环回地址,实际上表示为 127 个零,后跟一个 1,即(0000….127 次….1)。如果我们要写下来的话,会写成:

在 PHP 中获取 IP 地址

2.但在 IPv6 中,我们可以用简短的形式来表示这个大标签。因此,如果单个块中全是零,则可以用单个零替换。因此,当遵循上述规则时,它会变成:0:0:0:0:0:0:0:0001;

在 PHP 中获取 IP 地址

3.同样,零可以被消除,我们留下:: 0001

在 PHP 中获取 IP 地址

4.再次减少为‘:: 1’,因此输出。

上述代码的说明: 如果让它们运行,它们可能不会给出任何输出,或者可能返回运行时错误,因为私有域不提供其互联网协议地址。而如果上面的代码在本地服务器或本地主机上执行,比如我们使用了WAMP服务器,它会根据IP版本提供输出,也就是说,如果是IPv4,则Internet协议地址将为显示为 '127:0:0:1' 而如果是 IPv6,则互联网协议地址将显示如上,即 ':: 1'

以上是在 PHP 中获取 IP 地址的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
上一篇:PHP Output Buffering下一篇:PHP Open File