如何在PHP中获取连接的客户端的MAC和IP地址

我需要知道 MAC 和连接客户端的 IP地址,我怎么能做到这一点在 PHP?

我需要知道 MAC 和连接客户端的 IP地址,我怎么能做到这一点在 PHP?

206

服务器 IP

您可以从$_SERVER['SERVER_ADDR']获取服务器 IP 地址。

服务器 MAC 地址

对于 MAC 地址,您可以在 Linux 中解析netstat -ie的输出,或者在 Windows 中解析ipconfig /all的输出。

客户端 IP 地址

您可以从$_SERVER['REMOTE_ADDR']获取客户端 IP

客户端 MAC 地址

除非在一种特殊情况下,否则您将无法使用客户端 MAC 地址:如果客户端与服务器位于同一以太网网段上。

因此,如果您正在构建某种基于 LAN 的系统,并且您的客户端在同一以太网段上,那么您可以通过解析arp -n(linux)或arp -a(windows)。

编辑:您在注释中询问如何获取外部命令的输出-一种方法是使用反引号,例如

$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr=false;
#run the external command, break output into lines
$arp=`arp -a $ipAddress`;
$lines=explode("\n", $arp);
#look for the output line describing our IP address
foreach($lines as $line)
{
   $cols=preg_split('/\s+/', trim($line));
   if ($cols[0]==$ipAddress)
   {
       $macAddr=$cols[1];
   }
}

但是,如果客户端不在 LAN 上怎么办?

好吧,除非您可以让客户自愿提供该信息并通过其他方式进行传输,否则您将不走运。

25

客户端的 MAC 地址(在发出 HTTP 请求的计算机的意义上)被客户端和服务器之间的每个路由器覆盖。

客户端 IP 方便地提供给$_SERVER['REMOTE_ADDR']中的脚本。在某些情况下,特别是如果您的 Web 服务器位于代理(即缓存代理)之后,$_SERVER['REMOTE ADDR']将返回代理的 IP,并且会有一个额外的值,通常是$_SERVER['HTTP_X_FORWARDED_FOR'],其中包含原始请求客户端的 IP。

有时,特别是当您处理您无法控制的匿名代理时,代理不会返回真实的 IP地址,您所希望的只是代理的 IP地址。

9

我不认为你可以在 PHP 中获得 MAC 地址,但你可以从$_SERVER['REMOTE_ADDR']变量获得 IP。

8

对于 Windows 服务器,我认为你可以使用这个:

<?php
echo exec('getmac');
?>

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(41)
为什么有些函数在函数名前后都有下划线“__”(python underscore before function name)
上一篇
如何将音频文件(.mp3或.wav)拆分为10秒部分将其部分发送到函数
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(32条)