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 相关文章推荐
phpmyadmin 访问被拒绝的真实原因
Jun 15 PHP
php 日期和时间的处理-郑阿奇(续)
Jul 04 PHP
深入解析PHP内存管理之谁动了我的内存
Jun 20 PHP
PHP和javascript常用正则表达式及用法实例
Jul 01 PHP
几个实用的PHP内置函数使用指南
Nov 27 PHP
PHP多文件上传类实例
Mar 07 PHP
php简单实现发送带附件的邮件
Jun 10 PHP
php文件压缩之PHPZip类用法实例
Jun 18 PHP
Linux php 中文乱码的快速解决方法
May 13 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 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数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
thinkPHP引入类的方法详解
2016/12/08 PHP
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
jquery常用特效方法使用示例
2014/04/25 Javascript
js调试系列 源码定位与调试[基础篇]
2014/06/18 Javascript
javascript连续赋值问题
2015/07/08 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
Angularjs中使用Filters详解
2016/03/11 Javascript
基于JS代码实现导航条弹出式悬浮菜单
2016/06/17 Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
2018/04/20 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
详解在create-react-app使用less与antd按需加载
2018/12/06 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
寻找网站后台地址的python脚本
2014/09/01 Python
Django中几种重定向方法
2015/04/28 Python
python用装饰器自动注册Tornado路由详解
2017/02/14 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
python3 requests库文件上传与下载实现详解
2019/08/22 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
解决python gdal投影坐标系转换的问题
2020/01/17 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
在校生党员自我评价
2013/09/25 职场文书
采购内勤岗位职责
2013/12/10 职场文书
喝酒检查书范文
2014/02/23 职场文书
新年爱情寄语
2014/04/08 职场文书
自愿离婚协议书2015
2015/01/26 职场文书
2015年机关后勤工作总结
2015/05/26 职场文书
退休教师欢送会致辞
2015/07/31 职场文书
一文搞懂redux在react中的初步用法
2021/06/09 Javascript
美元符号 $
2022/02/17 杂记
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL