是的,PHP 可以获取局域网内的 IP 地址。您可以使用 $_SERVER['SERVER_ADDR']
变量来获取服务器 IP 地址,然后使用 $_SERVER['REMOTE_ADDR']
变量来获取客户端(即用户)的 IP 地址。在局域网内,这两个地址通常是相同的。
以下是一个简单的示例:
<?php
// 获取服务器 IP 地址
$server_ip = $_SERVER['SERVER_ADDR'];
echo "服务器 IP 地址: " . $server_ip . PHP_EOL;
// 获取客户端 IP 地址
$client_ip = $_SERVER['REMOTE_ADDR'];
echo "客户端 IP 地址: " . $client_ip . PHP_EOL;
?>
请注意,$_SERVER['REMOTE_ADDR']
可能返回 IPv4 或 IPv6 地址。如果您只需要获取 IPv4 地址,可以使用 inet_pton()
函数将 IP 地址转换为二进制格式,然后使用 inet_ntop()
函数将其转换回可读格式。例如:
<?php
// 获取客户端 IP 地址
$client_ip = $_SERVER['REMOTE_ADDR'];
echo "客户端 IP 地址: " . $client_ip . PHP_EOL;
// 将 IP 地址转换为二进制格式
$binary_ip = inet_pton(AF_INET, $client_ip);
// 将二进制格式的 IP 地址转换回可读格式
$readable_ip = inet_ntop(AF_INET, $binary_ip);
echo "客户端 IP 地址(可读格式): " . $readable_ip . PHP_EOL;
?>
这将确保您获取到的 IP 地址是 IPv4 或 IPv6 格式的,具体取决于客户端的连接。