php 局域网如何获取所有用户电脑的 IP 和主机名、mac 地址
最编程
2024-07-06 19:10:31
...
详细介绍php实现获取局域网所有用户的电脑ip和主机名、及mac地址,非常实用,需要的朋友可以参考下
代码如下:
<?php $bIp = gethostbyname($_ENV['COMPUTERNAME']); //获取本机的局域网IP echo "本机IP:",$bIp,"\n"; echo "本机主机名:",gethostbyaddr($bIp),"\n\n\n"; //gethostbyaddr 函数可以根据局域网IP获取主机名 //默认网关IP list($ipd1,$ipd2,$ipd3) = explode('.',$bIp); $mask = $ipd1 . "." . $ipd2 . "." . $ipd3 ; exec('arp -a',$aIp); //获取局域网中的其他IP foreach( $aIp as $ipv) { if(strpos($ipv,'接口') !== false) {//一下显示的IP是否是当前局域网中的 而不是其他的类型 可以在cmd下试一下命令 $bool = false; preg_match('/(?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))/',$ipv,$arr); if(strcmp($arr[0],$bIp) == 0) { $bool = true; } } else { if($bool) { $str = preg_replace('/\s+/', '|', $ipv); $sArr = explode('|',$str); if($sArr[1] == 'Internet' || empty($sArr[1])) { continue; } //去除默认网关 if(strcmp($mask . ".1", $sArr[1]) == 0) { continue; } //去除同网关下255的IP if(strcmp($mask . ".255", $sArr[1]) == 0) { continue; } //去除组播IP list($cIp) = explode('.', $sArr[1]); if($cIp >= 224 && $cIp <= 239) { continue; } echo "IP地址:|",$sArr[1],"|\n"; echo "MAC地址:",$sArr[2],"\n"; echo "主机名:",gethostbyaddr($sArr[1]),"\n"; echo "\n\n"; } } }
登录后复制
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
该程序是在cli模式下运行的,在浏览器上应该也可以
php获取局域网中的用户ip功能就完成了,主要用到的是php的exec函数 和window的arp -a 命令
其中获取本机IP:gethostbyname($_ENV['COMPUTERNAME']) 有别于以往的写法,感兴趣的朋友可以继续深入研究一下。
获取主机名函数:gethostbyaddr(IPd) 这个函数功能也很强大。
推荐学习:php视频教程
以上就是php局域网如何获取所有用户的电脑IP和主机名、mac地址的详细内容,更多请关注php中文网其它相关文章!
推荐阅读
-
软件分享 | 好到你买不起的远程控制软件 - Microsoft Remote Desktop 不用安装任何东西,因为这是微软系统自带的远程桌面应用程序,非常适合所有 Windows 设备。操作系统级支持非常流畅。但它需要被控电脑的明确地址(电脑名称/IP 地址)。但对于大多数连接到互联网的 PC 或具有共享插座的设备来说,普通用户很难知道并使用它们的动态地址。因此,这种应用一般更常用于局域网/VPN 和其他工作场景。当然,这是微软的专利,只支持 Windows 系统。
-
php 局域网如何获取所有用户电脑的 IP 和主机名、mac 地址
-
php 实现获取局域网内所有用户计算机的 IP 和主机名,以及 mac 地址的完整示例_PHP
-
南邮OJ Web任务大揭秘:层层挑战剖析 1. 挑战一:迷宫般的目录探索 题目作者似乎穷举了所有可能的目录组合,最终在404.php中的