php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例

 更新时间:2014年07月18日 18:07:35   投稿:shichen2014  
这篇文章主要介绍了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' || 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";
 }
 }
}

该程序是在cli模式下运行的,在浏览器上应该也可以
php获取局域网中的用户ip功能就完成了,主要用到的是php的exec函数 和window的arp -a  命令
其中获取本机IP:gethostbyname($_ENV['COMPUTERNAME']) 有别于以往的写法,感兴趣的朋友可以继续深入研究一下。
获取主机名函数:gethostbyaddr(IPd) 这个函数功能也很强大。

相关文章

  • PHP 图像处理与SESSION制作超简单验证码的方法示例

    PHP 图像处理与SESSION制作超简单验证码的方法示例

    这篇文章主要介绍了PHP 图像处理与SESSION制作超简单验证码的方法,结合实例形式详细分析了PHP结合session绘制图形验证码相关操作技巧,需要的朋友可以参考下
    2019-12-12
  • fgetcvs在linux的问题

    fgetcvs在linux的问题

    PHP5中的fgetcsv()函数在Linux上会有一个Bug:把文本字段的第一个字符的高位去除掉了,然后就会产生乱码
    2012-01-01
  • PHP中如何判断AJAX提交的数据

    PHP中如何判断AJAX提交的数据

    这是一个比较常用的方法,有时候我们需要知道一个页面是被直接访问的还是通过ajax来访问的
    2012-02-02
  • PHP面向对象程序设计之类常量用法实例

    PHP面向对象程序设计之类常量用法实例

    这篇文章主要介绍了PHP面向对象程序设计之类常量用法,是PHP面向对象程序设计中非常重要的一个概念,对于PHP初学者来说更是有必要加以牢固掌握,需要的朋友可以参考下
    2014-08-08
  • 使PHP自定义函数返回多个值

    使PHP自定义函数返回多个值

    使PHP自定义函数返回多个值...
    2006-11-11
  • PHP实现的一致性HASH算法示例

    PHP实现的一致性HASH算法示例

    这篇文章主要介绍了PHP实现的一致性HASH算法,结合具体实例形式分析了hash算法的具体定义与使用技巧,需要的朋友可以参考下
    2018-03-03
  • 浅谈laravel中间件的创建思路

    浅谈laravel中间件的创建思路

    网上有很多解析laravel中间件的实现原理,但是不知道有没有读者在读的时候不明白,作者是怎么想到要用array_reduce函数的?本文从自己的角度出发,模拟了如果我是作者,我是怎么实现这个中间件功能,又是怎么找到并使用对应的函数。本文将介绍Laravel中间件得创建思路。
    2021-05-05
  • CI框架中site_url()和base_url()的区别

    CI框架中site_url()和base_url()的区别

    这篇文章主要介绍了CI框架中site_url()和base_url()的区别,需要的朋友可以参考下
    2015-01-01
  • php简单实现批量上传图片的方法

    php简单实现批量上传图片的方法

    这篇文章主要介绍了php简单实现批量上传图片的方法,实例分析了php文件传输的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-05-05
  • php字符串截取中文截取2,单字节截取模式

    php字符串截取中文截取2,单字节截取模式

    这篇文章介绍了php字符串截取中文的截取方法,涉及php字符串遍历、计算、判断等相关操作技巧,需要的朋友可以参考一下
    2007-12-12

最新评论