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


Posted in PHP onJuly 18, 2014

本文所述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 相关文章推荐
Ping服务的php实现方法,让网站快速被收录
Feb 04 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
Sep 05 PHP
php网站地图生成类示例
Jan 13 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
Jun 23 PHP
php实现在服务器端调整图片大小的方法
Jun 16 PHP
PHP实现图片自动清理的方法
Jul 08 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
Jul 15 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
PHP写API输出的时用echo的原因详解
Apr 28 PHP
PHP实现基于状态的责任链审批模式详解
May 31 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 PHP
详解Laravel制作API接口
May 31 PHP
CodeIgniter中使用cookie的三种方式详解
Jul 18 #PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
Jul 18 #PHP
简单实用的网站PHP缓存类实例
Jul 18 #PHP
ThinkPHP表单自动提交验证实例教程
Jul 18 #PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 #PHP
ThinkPHP字符串函数及常用函数汇总
Jul 18 #PHP
ThinkPHP关于session的操作方法汇总
Jul 18 #PHP
You might like
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
2016/05/22 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
AJAX分页的代码(后台asp.net)
2011/02/14 Javascript
JS简单的图片放大缩小的两种方法
2013/11/11 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
微信小程序canvas拖拽、截图组件功能
2018/09/04 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
通过vue.extend实现消息提示弹框的方法记录
2021/01/07 Vue.js
JavaScript实现跟随鼠标移动的盒子
2021/01/28 Javascript
Python语法快速入门指南
2015/10/12 Python
python批量赋值操作实例
2018/10/22 Python
python 实现selenium断言和验证的方法
2019/02/13 Python
python 采用paramiko 远程执行命令及报错解决
2019/10/21 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
软件测试笔试题
2012/10/25 面试题
施工材料员岗位职责
2014/02/12 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
开发房地产协议书
2014/09/14 职场文书
个人工作表现评价材料
2014/09/21 职场文书
护理实习生带教计划
2015/01/16 职场文书
校车安全管理责任书
2015/05/11 职场文书
收入证明申请书
2015/06/12 职场文书
采购员工作总结范文
2015/08/12 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang