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模拟HTTP认证
Oct 09 PHP
PHP批量生成缩略图的代码
Jul 19 PHP
Windows7下PHP开发环境安装配置图文方法
May 20 PHP
php expects parameter 1 to be resource, array given 错误
Mar 23 PHP
三个类概括PHP的五种设计模式
Sep 05 PHP
PHP分多步骤填写发布信息的简单方法实例代码
Sep 23 PHP
PHP系统命令函数使用分析
Jul 05 PHP
php简单smarty入门程序实例
Jun 11 PHP
form自动提交实例讲解
Jul 10 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
PHP+mysql防止SQL注入的方法小结
Apr 27 PHP
用php实现分页效果的示例代码
Dec 10 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
zf框架db类的分页示例分享
2014/03/14 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
js刷新框架子页面的七种方法代码
2008/11/20 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
2015/04/30 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
详解vue 中使用 AJAX获取数据的方法
2017/01/18 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
vue头部导航动态点击处理方法
2018/11/02 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
Python算法应用实战之栈详解
2017/02/04 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
Scrapy框架使用的基本知识
2018/10/21 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
python中的Elasticsearch操作汇总
2019/10/30 Python
python zip()函数使用方法解析
2019/10/31 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
纯css实现照片墙3D效果的示例代码
2017/11/13 HTML / CSS
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
揭牌仪式主持词
2014/03/19 职场文书
师德师风演讲稿
2014/05/05 职场文书
大学生军训自我鉴定范文
2014/09/18 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书
2015年初三班主任工作总结
2015/05/21 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书
Oracle 数据仓库ETL技术之多表插入语句的示例详解
2021/04/12 Oracle
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技