要学习“在 PHP 中获取 IP 地址”,首先我们将研究 IP 地址。 IP 地址或互联网协议地址是连接到网络的每个系统或设备都具有的数字地址或标签的地址。 IP 地址被分配给每个此类设备。这些设备使用互联网协议进行任何类型的通信。
广告 该类别中的热门课程 PHP 开发人员 - 专业化 | 8 门课程系列 | 3次模拟测试开始您的免费软件开发课程
网络开发、编程语言、软件测试及其他
以下几点解释IP版本:
出于安全原因,网站收集其网站访问者的 IP 地址。有一个简单的方法可以在 PHP 中获取该地址。 PHP 中有一个特定的数组可以帮助并返回您机器的 IP 地址。数组称为“$_SERVER”。它包含有关路径、标头和脚本位置的信息。 Web 服务器创建 $_SERVER 数组所需的信息。有时,服务器不会创建或提供阵列所需的所有信息,它们可能会省略其中一些信息。因此,在这种情况下可以使用另一个数组。它被写为“SERVER_ADDR”。该数组返回运行脚本的服务器的 IP 地址。
下面是在 php 中获取 IP 地址的示例:
最简单的方法是使用 $_SERVER 和 ‘REMOTE_ADDR’,它将返回当前正在查看该页面的用户的 IP 地址。
代码:
<?php echo 'User IP - '.$_SERVER['REMOTE_ADDR']; ?>
输出:
另一种方法,称为“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"; ?>
输出:
对上述程序的说明:上面的示例数组 [$_SERVER] 很有帮助,因为机器未通过代理连接。如果机器通过代理服务器连接到互联网,PHP 中的 $_SERVER[‘REMOTE_ADDR’] 不会返回正确的 IP 地址。它只返回代理服务器和用户或客户端计算机的 IP 地址。在这种情况下,可以使用另一种方法来检索正确的地址。
以下示例用于返回正确且真实的 IP 地址,即使计算机隐藏在代理服务器后面。它使用一对额外的 SERVER 变量,可用于获取客户端系统或计算机的确切 IP 地址。它们被称为 HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR。
代码:
<?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(); ?>
输出:
如果想了解上述代码的动作流程,可以参考下面的流程图。
对上述程序的说明:上面检索 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)。如果我们要写下来的话,会写成:
2.但在 IPv6 中,我们可以用简短的形式来表示这个大标签。因此,如果单个块中全是零,则可以用单个零替换。因此,当遵循上述规则时,它会变成:0:0:0:0:0:0:0:0001;
3.同样,零可以被消除,我们留下:: 0001
4.再次减少为‘:: 1’,因此输出。
上述代码的说明: 如果让它们运行,它们可能不会给出任何输出,或者可能返回运行时错误,因为私有域不提供其互联网协议地址。而如果上面的代码在本地服务器或本地主机上执行,比如我们使用了WAMP服务器,它会根据IP版本提供输出,也就是说,如果是IPv4,则Internet协议地址将为显示为 '127:0:0:1' 而如果是 IPv6,则互联网协议地址将显示如上,即 ':: 1'
以上是在 PHP 中获取 IP 地址的详细内容。更多信息请关注PHP中文网其他相关文章!