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 相关文章推荐
ADODB的数据库封包程序库
Dec 31 PHP
PHP 开源AJAX框架14种
Aug 24 PHP
检测png图片是否完整的php代码
Sep 06 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
Jun 29 PHP
PHP基于yii框架实现生成ICO图标
Nov 13 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
Mar 07 PHP
php生成txt文件实例代码介绍
Apr 28 PHP
PHP入门教程之PHP操作MySQL的方法分析
Sep 11 PHP
PHP设计模式之单例模式原理与实现方法分析
Apr 25 PHP
PHP数字金额转换成中文大写显示
Jan 05 PHP
Yii框架参数配置文件params用法实例分析
Sep 11 PHP
聊聊 PHP 8 新特性 Attributes
Aug 19 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+highchats生成动态统计图
2014/05/21 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
微信公众号判断用户是否已关注php代码解析
2016/06/24 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
基于PHP+mysql实现新闻发布系统的开发
2020/08/06 PHP
使用jscript实现二进制读写脚本代码
2008/06/09 Javascript
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
用Vue.js方法创建模板并使用多个模板合成
2019/06/28 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
javascript 函数的暂停和恢复实例详解
2020/04/25 Javascript
vue-router为激活的路由设置样式操作
2020/07/18 Javascript
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
[03:15]DOTA2-DPC中国联赛1月22日Recap集锦
2021/03/11 DOTA
使用Python中的cookielib模拟登录网站
2015/04/09 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
2018/07/13 Python
python 美化输出信息的实例
2018/10/15 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
PyQt编程之如何在屏幕中央显示窗体的实例
2019/06/18 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
Html5 FileReader实现即时上传图片功能实例代码
2014/09/01 HTML / CSS
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
承办会议欢迎词
2014/01/17 职场文书
军训自我鉴定200字
2014/02/13 职场文书
利群广告词
2014/03/20 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python