php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
发布:smiling 来源: PHP粉丝网 添加日期:2021-03-22 13:52:39 浏览: 评论:0
这篇文章主要介绍了php实现获取局域网所有用户的电脑IP和主机名、及mac地址,非常实用,需要的朋友可以参考下。
本文所述php实例可以完成获取局域网所有用户的电脑IP和主机名、及mac地址的功能,对于php程序设计人员有一定的参考借鉴价值。完整代码如下:
- <?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' || emptyempty($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";
- }
- }
- }
该程序是在cli模式下运行的,在浏览器上应该也可以
php获取局域网中的用户ip功能就完成了,主要用到的是php的exec函数 和window的arp -a 命令
其中获取本机IP:gethostbyname($_ENV['COMPUTERNAME']) 有别于以往的写法,感兴趣的朋友可以继续深入研究一下。
获取主机名函数:gethostbyaddr(IPd) 这个函数功能也很强大。
Tags: php获取局域网IP
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)