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 相关文章推荐
PHP4实际应用经验篇(5)
Oct 09 PHP
mysql下创建字段并设置主键的php代码
May 16 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
Jul 17 PHP
查找mysql字段中固定字符串并替换的几个方法
Sep 23 PHP
php动态生成函数示例
Mar 21 PHP
php下pdo的mysql事务处理用法实例
Dec 27 PHP
通过PHP简单实例介绍文件上传
Dec 16 PHP
[原创]php实现子字符串位置相互对调互换的方法
Jun 02 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
Sep 13 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
May 30 PHP
PHP获取HTTP body内容的方法
Dec 31 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
php读取30天之内的根据算法排序的代码
2008/04/06 PHP
PHP循环获取GET和POST值的代码
2008/04/09 PHP
用php解析html的实现代码
2011/08/08 PHP
php中++i 与 i++ 的区别
2012/08/08 PHP
php curl选项列表(超详细)
2013/07/01 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
php的debug相关函数用法示例
2016/07/11 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
2020/06/02 PHP
jquery.alert 弹出式复选框实现代码
2009/06/15 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
canvas实现钟表效果
2017/02/13 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
python列表与元组详解实例
2013/11/01 Python
Python贪心算法实例小结
2018/04/22 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
2020/04/15 Python
Office DEPOT法国官网:欧迪办公用品采购
2018/01/03 全球购物
人事行政主管岗位职责
2013/12/22 职场文书
红旗团支部事迹材料
2014/01/27 职场文书
小学教师节活动方案
2014/01/31 职场文书
煤矿机修工岗位职责
2014/02/07 职场文书
低碳日宣传活动总结
2014/07/09 职场文书
法人委托书范本格式
2014/09/15 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
雷锋的观后感
2015/06/10 职场文书
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL