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二分法在IP地址查询中的应用
Aug 12 PHP
PHP Mysql编程之高级技巧
Aug 27 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
php设计模式 Proxy (代理模式)
Jun 26 PHP
PHP警告Cannot use a scalar value as an array的解决方法
Jan 11 PHP
php文件上传的简单实例
Oct 19 PHP
php之static静态属性与静态方法实例分析
Jul 30 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
Sep 23 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
Apr 09 PHP
PHP cURL获取微信公众号access_token的实例
Apr 28 PHP
php 截取中英文混合字符串的方法
May 31 PHP
laravel5.1 ajax post 传值_token示例
Oct 24 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
[EPIC] Larva vs Flash ZvT @ Crossing Field [2017-10-09]
2020/03/17 星际争霸
在PHP中使用反射技术的架构插件使用说明
2010/05/18 PHP
php教程 插件机制在PHP中实现方案
2012/11/02 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
php简单解析mysqli查询结果的方法(2种方法)
2016/06/29 PHP
PHP xpath()函数讲解
2019/02/11 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
jquery validator 插件增加日期比较方法
2010/02/21 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
Bootstrap3制作自己的导航栏
2016/05/12 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
vue+Java后端进行调试时解决跨域问题的方式
2017/10/19 Javascript
前端面试知识点目录一览
2019/04/15 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
javascript实现日历效果
2019/06/17 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
[01:35]辉夜杯战队访谈宣传片—iG.V
2015/12/25 DOTA
Python中的类与对象之描述符详解
2015/03/27 Python
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
公务员年总结的自我评价
2013/10/25 职场文书
旅游管理专业个人求职信范文
2013/12/24 职场文书
党员学习十八大感想
2014/01/17 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
绩效考核实施方案
2014/03/18 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
学习型党组织心得体会
2014/09/12 职场文书
酒店员工手册范本
2015/05/14 职场文书
古诗文之爱国名句(77句)
2019/09/24 职场文书
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle