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中的内存管理问题
Aug 31 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
Sep 20 PHP
php根据分类合并数组的方法实例详解
Nov 06 PHP
PhpDocumentor 2安装以及生成API文档的方法
May 21 PHP
PHP 获取ip地址代码汇总
Jul 05 PHP
yii去掉必填项中星号的方法
Dec 28 PHP
微信公众平台DEMO(PHP)
May 04 PHP
php 生成Tab键或逗号分隔的CSV
Sep 24 PHP
thinkPHP引入类的方法详解
Dec 08 PHP
PHP的PDO预处理语句与存储过程
Jan 27 PHP
Yii框架核心组件类实例详解
Aug 06 PHP
基于PHP的登录和注册的功能的实现
Aug 06 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
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
JS实现QQ图片一闪一闪的效果小例子
2013/07/31 Javascript
用JS实现3D球状标签云示例代码
2013/12/01 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法
2018/06/07 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
Vue中的transition封装组件的实现方法
2019/08/13 Javascript
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
Python获取远程文件大小的函数代码分享
2014/05/13 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
2017/12/21 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
centos7中安装python3.6.4的教程
2019/12/11 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
秘书岗位职责
2013/11/18 职场文书
我的五年职业生涯规划
2014/01/23 职场文书
中学生自我评价范文
2014/02/08 职场文书
关于安全的标语
2014/06/10 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
2014年团支书工作总结
2014/11/14 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书