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实现ODBC数据分页显示一例
Oct 09 PHP
在PHP中使用与Perl兼容的正则表达式
Nov 26 PHP
phpMyAdmin 安装教程全攻略
Mar 19 PHP
php5中date()得出的时间为什么不是当前时间的解决方法
Jun 30 PHP
php学习之简单计算器实现代码
Jun 09 PHP
PHP在线生成二维码代码(google api)
Jun 03 PHP
php操作xml
Oct 27 PHP
php+MySQL判断update语句是否执行成功的方法
Aug 28 PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 PHP
PHP生成随机字符串(3种方法)
Sep 25 PHP
PHP7扩展开发教程之Hello World实现方法示例
Aug 03 PHP
php测试kafka项目示例
Feb 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
php miniBB中文乱码问题解决方法
2008/11/25 PHP
php读取csv实现csv文件下载功能
2013/12/18 PHP
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
jquery 定位input元素的几种方法小结
2013/07/28 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
2016/06/07 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
详解在Python程序中解析并修改XML内容的方法
2015/11/16 Python
Python读取视频的两种方法(imageio和cv2)
2018/04/15 Python
python暴力解压rar加密文件过程详解
2019/07/05 Python
Burberry英国官网:英国标志性奢侈品牌
2017/03/29 全球购物
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
实习公司领导推荐函
2014/05/21 职场文书
ktv好的活动方案
2014/08/17 职场文书
学校党委副书记个人对照检查材料思想汇报
2014/09/28 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫