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 相关文章推荐
phpmyadmin的#1251问题
Nov 25 PHP
php smarty函数扩展
Mar 15 PHP
php小偷相关截取函数备忘
Nov 28 PHP
关于初学PHP时的知识积累总结
Jun 07 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
Dec 02 PHP
使用php记录用户通过搜索引擎进网站的关键词
Feb 13 PHP
yii实现使用CUploadedFile上传文件的方法
Dec 28 PHP
PHP浮点比较大小的方法
Feb 14 PHP
PHP自定义函数获取汉字首字母的方法
Dec 01 PHP
PHP函数rtrim()使用中的怪异现象分析
Feb 24 PHP
PHP中quotemeta()函数的用法讲解
Apr 04 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
Aug 30 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应用程序来获取Web服务器的状态信息
2006/10/09 PHP
PHP字符转义相关函数小结(php下的转义字符串)
2007/04/12 PHP
php UTF8 文件的签名问题
2009/10/30 PHP
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
2014/06/12 PHP
老生常谈PHP 文件写入和读取(必看篇)
2017/05/22 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
很全的显示阴历(农历)日期的js代码
2009/01/01 Javascript
input的focus方法使用
2010/03/13 Javascript
JavaScript arguments 多参传值函数
2010/10/24 Javascript
JS 自定义带默认值的函数
2011/07/21 Javascript
jquery实现的伪分页效果代码
2015/10/29 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
javascript数组去重常用方法实例分析
2017/04/11 Javascript
webpack学习教程之前端性能优化总结
2017/12/05 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
jquery简单实现纵向的无缝滚动代码实例
2019/04/01 jQuery
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
windows 下python+numpy安装实用教程
2017/12/23 Python
python设置值及NaN值处理方法
2018/07/03 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
2019/04/15 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
2019/09/25 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
在线服装零售商:SheIn
2016/07/22 全球购物
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
客房主管岗位职责
2013/12/09 职场文书
社会实践活动总结报告
2014/04/29 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
辞职信格式范文
2015/05/13 职场文书
Go语言设计模式之结构型模式
2021/06/22 Golang