当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在PHP中获取已连接客户端的MAC和IP地址?》经验,为你挑选了5个好方法。

我需要知道连接客户端的MAC和IP地址,我该如何在PHP中执行此操作?



1> Paul Dixon..:

服务器IP

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

服务器MAC地址

对于MAC地址,您可以解析netstat -ieLinux或ipconfig /allWindows中的输出.

客户端IP地址

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

客户端MAC地址

除非在一个特殊情况下,否则客户端MAC地址将不可用:如果客户端与服务器位于同一以太网段上.

所以,如果你正在构建某种基于局域网的系统和你的客户在同一个以太网段,那么你可以通过解析的输出中获得的MAC地址arp -n(Linux)或arp -a(窗口).

编辑:你在评论中询问如何获得外部命令的输出 - 一种方法是使用反引号,例如

$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];
   }
}

但是,如果客户端不在局域网上怎么办?

好吧,除非你能让客户自愿提供这些信息并通过其他方式传输,否则你运气不好.


@ jcho360就个人而言,我会使用IP地址+请求信息的组合并对其进行哈希处理,例如md5($ _ SERVER ['REMOTE_ADDR'].$ _SERVER ['HTTP_USER_AGENT']);. 它肯定不是防弹,但它是一个开始.另一种更简单,更安全的方法是使用唯一的哈希设置cookie.每次使用该cookie时,您确定哪个用户正在连接到您的网站.
如何使用PHP获取arp -a的输出?

2> Michał Tatar..:

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

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

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



3> RaYell..:

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



4> 小智..:

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



<?php echo exec('getmac'); ?>仅在LAN上有效,但是此命令显示所有mac地址<php system('getmac');。?>

5> 小智..:

您需要做的就是将arp放入不同的组中.

默认:

-rwxr-xr-x 1 root root 48K 2008-11-11 18:11 /usr/sbin/arp*

用命令:

sudo chown root:www-data /usr/sbin/arp

你会得到:

-rwxr-xr-x 1 root www-data 48K 2008-11-11 18:11 /usr/sbin/arp*

因为apache是​​一个在用户www-data下运行的守护进程,所以它现在能够执行这个命令.

因此,如果您现在使用PHP脚本,例如:


你将获得linux arp -an命令的输出.


这只会为您提供本地网络上设备的MAC地址.
推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有