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 相关文章推荐
也谈php网站在线人数统计
Apr 09 PHP
php Rename 更改文件、文件夹名称
May 24 PHP
php的memcached客户端memcached
Jun 14 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
Oct 23 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
PHP实现的带超时功能get_headers函数
Feb 10 PHP
Symfony2学习笔记之插件格式分析
Mar 17 PHP
Yii2实现同时搜索多个字段的方法
Aug 10 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
laravel 实现上传图片到本地和前台访问示例
Oct 21 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 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 simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
PHPMailer发送HTML内容、带附件的邮件实例
2014/07/01 PHP
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
在次封装easyui-Dialog插件实现代码
2010/11/14 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
JavaScript获取页面中第一个锚定文本的方法
2015/04/03 Javascript
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
vuex提交state&amp;&amp;实时监听state数据的改变方法
2018/09/16 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
Python字典dict常用方法函数实例
2020/11/09 Python
CSS3制作炫酷的自定义发光文字
2016/03/28 HTML / CSS
丝芙兰加拿大官方网站:SEPHORA加拿大
2018/11/20 全球购物
农村党支部先进事迹
2014/01/14 职场文书
工程招投标邀请书
2014/01/30 职场文书
人力资源总监工作说明
2014/03/03 职场文书