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 相关文章推荐
JAVA/JSP学习系列之七
Oct 09 PHP
PHP备份数据库生成SQL文件并下载的函数代码
Feb 05 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
Apr 09 PHP
php数组去重的函数代码
Feb 03 PHP
fetchAll()与mysql_fetch_array()的区别详解
Jun 05 PHP
destoon实现底部添加你是第几位访问者的方法
Jul 15 PHP
PHP实现自动对图片进行滚动显示的方法
Mar 12 PHP
基于PHP给大家讲解防刷票的一些技巧
Nov 18 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
Jun 13 PHP
PHP屏蔽关键字实现方法
Nov 17 PHP
php封装的mongodb操作类代码
Aug 06 PHP
PHP Include文件实例讲解
Feb 15 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
YB217、YB235、YB400浅听
2021/03/02 无线电
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
javascript 自动填写表单的实现方法
2010/04/09 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
NodeJS链接MySql数据库的操作方法
2017/06/27 NodeJs
基于rem的移动端响应式适配方案(详解)
2017/07/07 Javascript
vue-cli脚手架的安装教程图解
2018/09/02 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
2019/03/28 Javascript
基于Ionic3实现选项卡切换并重新加载echarts
2020/09/24 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
Python实现的批量下载RFC文档
2015/03/10 Python
详解在Python程序中自定义异常的方法
2015/10/16 Python
python爬取51job中hr的邮箱
2016/05/14 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
2017/12/14 Python
scrapy爬虫实例分享
2017/12/28 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
python中rb含义理解
2020/06/18 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
芬兰灯具网上商店:Nettilamppu.fi
2018/06/30 全球购物
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
小学综合实践活动总结
2014/07/07 职场文书
2015年底工作总结范文
2015/05/15 职场文书
节约用水广告语60条
2019/11/14 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server
python编写五子棋游戏
2021/05/25 Python