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 相关文章推荐
php数组的概述及分类与声明代码演示
Feb 26 PHP
PHP生成Gif图片验证码
Oct 27 PHP
PHP调用VC编写的COM组件实例
Mar 29 PHP
纯PHP生成的一个树叶图片画图例子
Apr 16 PHP
Yii学习总结之数据访问对象 (DAO)
Feb 22 PHP
PHP中$_SERVER使用说明
Jul 05 PHP
54个提高PHP程序运行效率的方法
Jul 19 PHP
PHP数组相加操作及与array_merge的区别浅析
Nov 26 PHP
PHP关键特性之命名空间实例详解
May 06 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
PHP+MySQL实现模糊查询员工信息功能示例
Jun 01 PHP
php接口隔离原则实例分析
Nov 11 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
PHP中把对象数组转换成普通数组的方法
2015/07/10 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
PHP实现文件上传与下载
2020/08/28 PHP
XmlUtils JS操作XML工具类
2009/10/01 Javascript
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
HTML5之lang属性与dir属性的详解
2013/06/19 Javascript
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
javascript实现淘宝幻灯片广告展示效果
2015/04/27 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
简单实现js浮动框
2016/12/13 Javascript
echarts3 使用总结(绘制各种图表,地图)
2017/01/05 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
Angular4学习笔记router的简单使用
2018/03/30 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
实例讲解React 组件
2020/07/07 Javascript
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
2016/11/19 Python
matlab中实现矩阵删除一行或一列的方法
2018/04/04 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
如何教少儿学习Python编程
2020/07/10 Python
联想新西兰官方网站:Lenovo New Zealand
2018/10/30 全球购物
医院后勤自我鉴定
2013/10/13 职场文书
秋季运动会加油稿200字
2014/01/11 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
创业计划书之电动车企业
2019/10/11 职场文书
Go语言读取txt文档的操作方法
2022/01/22 Golang