php获取服务器端mac和客户端mac的地址支持WIN/LINUX


Posted in PHP onMay 15, 2014

获取服务器mac

<?php 
/** 
获取网卡的MAC地址原码;目前支持WIN/LINUX系统 
获取机器网卡的物理(MAC)地址 
**/ 
class GetmacAddr{ 
var $result = array(); // 返回带有MAC地址的字串数组 
var $macAddr; 
/*构造*/ 
function __construct($osType){ 
switch ( strtolower($osType) ){ 
case "unix": break; 
case "solaris": break; 
case "aix": break; 
case "linux": { 
$this->for_linux_os(); 
}break; 
default: { 
$this->for_windows_os(); 
}break; 
} 
$temp_array = array(); 
foreach($this->result as $value){ 
if(preg_match("/[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f]/i",$value, 
$temp_array ) ){ 
$this->macAddr = $temp_array[0]; 
break; 
} 
} 
unset($temp_array); 
return $this->macAddr; 
} 
/*linux系统中获取方法*/ 
function for_linux_os(){ 
@exec("ifconfig -a", $this->result); 
return $this->result; 
} 
/*win系统中的获取方法*/ 
function for_windows_os(){ 
@exec("ipconfig /all", $this->result); 
if ( $this->result ) { 
return $this->result; 
} else { 
$ipconfig = $_SERVER["WINDIR"]."\system32\ipconfig.exe"; 
if(is_file($ipconfig)) { 
@exec($ipconfig." /all", $this->result); 
} else { 
@exec($_SERVER["WINDIR"]."\system\ipconfig.exe /all", $this->result); 
return $this->result; 
} 
} 
} 
} 
?>

获取客户端mac地址:
@exec("arp -a",$array); //执行arp -a命令,结果放到数组$array中 
foreach($array as $value){ 
//匹配结果放到数组$mac_array 
if(strpos($value,$_SERVER["REMOTE_ADDR"]) && preg_match("/(:?[0-9A-F]{2}[:-]){5}[0-9A-F]{2}/i",$value,$mac_array)){ 
$mac = $mac_array[0]; 
break; 
} 
} 
echo $mac;

注:客户端获取的mac不能在本机测试,只能用别的电脑访问才能输出
PHP 相关文章推荐
967 个函式
Oct 09 PHP
PHP生成月历代码
Jun 14 PHP
PHP MVC模式在网站架构中的实现分析
Mar 04 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
Apr 22 PHP
检查用户名是否已在mysql中存在的php写法
Jan 20 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
Sep 22 PHP
对PHP PDO的一些认识小结
Jan 23 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
Jul 31 PHP
php对xml文件的增删改查操作实现方法分析
May 19 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
Aug 30 PHP
PDO::beginTransaction讲解
Jan 27 PHP
如何在PHP中生成随机数
Jun 04 PHP
php小技巧之过滤ascii控制字符
May 14 #PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 #PHP
PHP中copy on write写时复制机制介绍
May 13 #PHP
php读取富文本的时p标签会出现红线是怎么回事
May 13 #PHP
php的慢速日志引起的Mysql错误问题分析
May 13 #PHP
PHP实现的MongoDB数据库操作类分享
May 12 #PHP
PHP中date与gmdate的区别及默认时区设置
May 12 #PHP
You might like
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
基于PHP输出缓存(output_buffering)的深入理解
2013/06/13 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
PHP INT类型在内存中占字节详解
2019/07/20 PHP
firefox中JS读取XML文件
2006/12/21 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
2014/09/21 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
Vue按时间段查询数据组件使用详解
2020/08/21 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
vue element-ui中table合计指定列求和实例
2020/11/02 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python3写入文件常用方法实例分析
2015/05/22 Python
剖析Python的Tornado框架中session支持的实现代码
2015/08/21 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
Pytorch之contiguous的用法
2019/12/31 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
西雅图的买手店:Totokaelo
2019/10/19 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
简易离婚协议书范本2014
2014/10/15 职场文书
重阳节简报
2015/07/20 职场文书
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android