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 相关文章推荐
杏林同学录(九)
Oct 09 PHP
php 删除记录同时删除图片文件的实现代码
May 12 PHP
php防攻击代码升级版
Dec 29 PHP
php生成数组的使用示例 php全组合算法
Jan 16 PHP
高性能PHP框架Symfony2经典入门教程
Jul 08 PHP
PHP正则验证Email的方法
Jun 15 PHP
PHP中常用的魔术方法
Apr 28 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
Jun 12 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
Mar 18 PHP
PHP常用函数之获取汉字首字母功能示例
Oct 21 PHP
TP5框架页面跳转样式操作示例
Apr 05 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
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
php实现计数器方法小结
2015/01/05 PHP
windows下安装php的memcache模块的方法
2015/04/07 PHP
PHP中的Trait 特性及作用
2016/04/03 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
总结一些js自定义的函数
2006/08/05 Javascript
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
2016/12/18 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
使用apifm-wxapi模块中的问题及解决方法
2019/08/05 Javascript
在Chrome DevTools中调试JavaScript的实现
2020/04/07 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
html5.2 dialog简介详解
2018/02/27 HTML / CSS
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
中药专业大学生医药工作求职信
2013/10/25 职场文书
怎样写好创业计划书的内容
2014/02/06 职场文书
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
2014年小学重阳节活动策划方案
2014/09/16 职场文书
2014年国庆节庆祝建国65周年比赛演讲稿
2014/09/21 职场文书
python关于集合的知识案例详解
2021/05/30 Python