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 水平的题目
May 30 PHP
用php获取远程图片并把它保存到本地的代码
Apr 07 PHP
PHP中常用数组处理方法实例分析
Aug 30 PHP
apache配置虚拟主机的方法详解
Jun 17 PHP
php实现随机生成易于记忆的密码
Jun 19 PHP
PHP中$_SERVER使用说明
Jul 05 PHP
PHP数组游标实现对数组的各种操作详解
Jan 26 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
Jan 19 PHP
详解PHP使用Redis存储session时的一个Warning定位
Jul 05 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
用Laravel轻松处理千万级数据的方法实现
Dec 25 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使用ICQ网关发送手机短信
2013/10/30 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
jquery异步调用页面后台方法&amp;#8207;(asp.net)
2011/03/01 Javascript
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
js 显示base64编码的二进制流网页图片
2014/04/04 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
2019/07/19 Javascript
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
python try except返回异常的信息字符串代码实例
2019/08/15 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
python中元组的用法整理
2020/06/15 Python
Python wordcloud库安装方法总结
2020/12/31 Python
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
公交公司毕业生求职信
2014/02/15 职场文书
大学生会计职业生涯规划范文
2014/02/28 职场文书
《沉香救母》教学反思
2014/04/19 职场文书
社区工作者演讲稿
2014/05/23 职场文书
纪念九一八事变演讲稿1000字
2014/09/14 职场文书
党员干部批评与自我批评反四风思想汇报
2014/09/21 职场文书
自荐信怎么写
2015/03/04 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS