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 相关文章推荐
Get或Post提交值的非法数据处理
Oct 09 PHP
网络资源
Oct 09 PHP
php 保留小数点
Apr 21 PHP
php学习之 数组声明
Jun 09 PHP
php的urlencode()URL编码函数浅析
Aug 09 PHP
file_get_contents获取不到网页内容的解决方法
Mar 07 PHP
php中引用符号(&amp;)的使用详解
Nov 13 PHP
phpstorm配置Xdebug进行调试PHP教程
Dec 01 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
PDO::_construct讲解
Jan 27 PHP
PHP实现支持CURL字符串证书传输的方法
Mar 23 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数组实例总结与说明
2011/08/23 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
php中foreach结合curl实现多线程的方法分析
2016/09/22 PHP
PHP二维数组去重算法
2016/12/17 PHP
php7基于递归实现删除空文件夹的方法示例
2017/06/15 PHP
prototype 学习笔记整理
2009/07/17 Javascript
不同浏览器的怪癖小结
2010/07/11 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
JavaScript原生对象之Date对象的属性和方法详解
2015/03/13 Javascript
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
vue基于better-scroll实现左右联动滑动页面
2020/06/30 Javascript
linux中如何使用python3获取ip地址
2019/07/15 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
Perfumetrader荷兰:香水、化妆品和护肤品在线商店
2017/09/15 全球购物
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
船舶专业个人求职信范文
2014/01/02 职场文书
《记金华的双龙洞》教学反思
2014/04/19 职场文书
化工操作工岗位职责
2014/04/29 职场文书
员工薪酬激励方案
2014/06/13 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
2015年读书月活动总结
2015/03/26 职场文书
关于远足的感想
2015/08/10 职场文书
如何利用Matlab制作一款真正的拼图小游戏
2021/05/11 Python
Django migrate报错的解决方案
2021/05/20 Python