php/js获取客户端mac地址的实现代码


Posted in PHP onJuly 08, 2013

废话不多讲,直接上代码吧!

<?php   
class MacAddr 
{   
    public $returnArray = array();    
    public $macAddr;       function __contruct($os_type=null){ 
        if(is_null($os_type)) $os_type = PHP_OS;   
        switch (strtolower($os_type)){   
        case "linux":   
            $this->forLinux();   
            break;   
        case "solaris":   
            break;   
        case "unix":   
            break;   
        case "aix":   
            break;   
        default:   
            $this->forWindows();   
            break;   
        }   
        $temp_array = array();   
        foreach($this->returnArray 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;   
    } 
    function forWindows(){   
        @exec("ipconfig /all", $this->returnArray);   
        if($this->returnArray)   
            return $this->returnArray;   
        else{   
            $ipconfig = $_SERVER["WINDIR"]."system32ipconfig.exe";   
            if (is_file($ipconfig))   
                @exec($ipconfig." /all", $this->returnArray);   
            else  
                @exec($_SERVER["WINDIR"]."systemipconfig.exe /all", $this->returnArray);   
            return $this->returnArray;   
        }   
    } 
    function forLinux(){   
        @exec("ifconfig -a", $this->returnArray);   
        return $this->returnArray;   
    }   
}   
$mac = new MacAddr(PHP_OS);   
echo $mac->macAddr;   
echo "<br />"; 
// 获取客户端 
// linux 
$command = "arp -a {$_SERVER['REMOTE_ADDR']}"; 
echo $command; 
echo "<br />"; 
$result=`{$command}`;  
// windows 
$command = "nbtstat -a {$_SERVER['REMOTE_ADDR']}"; 
echo $command; 
echo "<br />"; 
$result=`{$command}`;  
print_r($result);   
?>

获取服务端的逻辑没什么大问题,可能会存在权限问题。
获取客户端的时候,可能会比较慢,arp/nbstat命令执行会比较慢。

<script language="JScript" event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for="foo">    
document.forms[0].lbMacAddr.value=unescape(MACAddr);    
</script>   
<script language="JScript" event="OnObjectReady(objObject,objAsyncContext)" for="foo">    
if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true && objObject.MACAddress != null && objObject.MACAddress != "undefined") MACAddr = objObject.MACAddress;    
</script>   
<object id="locator" classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6"></object>   
<object id="foo" classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223"></object>   
<script language="JScript">    
var service = locator.ConnectServer();    
var MACAddr ;    
var IPAddr ;    
var DomainAddr;    
var sDNSName;    
service.Security_.ImpersonationLevel=3;    
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');    
</script>   
<form><input type="text" id='lbMacAddr' name='lbMacAddr' /></form>

只适用于IE浏览器,而且会有告警提示,挺遗憾的。

PHP 相关文章推荐
PHP 裁剪图片成固定大小代码方法
Sep 09 PHP
php设计模式 Decorator(装饰模式)
Jun 26 PHP
基于xcache的配置与使用详解
Jun 18 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
smarty内置函数foreach用法实例
Jan 22 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
Jul 01 PHP
实例简介PHP的一些高级面向对象编程的特性
Nov 27 PHP
apache php mysql开发环境安装教程
Jul 28 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
Feb 15 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 PHP
PHP生成指定范围内的N个不重复的随机数
Mar 18 PHP
PHP实现微信退款的方法示例
Mar 26 PHP
关于PHP语言构造器介绍
Jul 08 #PHP
php5.5新数组函数array_column使用
Jul 08 #PHP
PHP 关于访问控制的和运算符优先级介绍
Jul 08 #PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 #PHP
php采集文章中的图片获取替换到本地(实现代码)
Jul 08 #PHP
php打开文件fopen函数的使用说明
Jul 05 #PHP
解析PHP中$_FILES的使用以及注意事项
Jul 05 #PHP
You might like
php使用imagick模块实现图片缩放、裁剪、压缩示例
2014/04/17 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
PHP设置Cookie的HTTPONLY属性方法
2017/02/09 PHP
使用Jquery来实现可以输入值的下拉选单 雏型
2011/12/06 Javascript
JavaScript实现QueryString获取GET参数的方法
2013/07/02 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
Javascript复制实例详解
2016/01/28 Javascript
老生常谈Javascript中的原型和this指针
2016/10/09 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
jquery实现直播弹幕效果
2019/11/28 jQuery
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
js实现验证码干扰(静态)
2021/02/22 Javascript
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
Cython 三分钟入门教程
2009/09/17 Python
Python实现网站文件的全备份和差异备份
2014/11/30 Python
python执行get提交的方法
2015/04/29 Python
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
Python获取Redis所有Key以及内容的方法
2019/02/19 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
在python中做正态性检验示例
2019/12/09 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
实现CSS3中的border-radius(边框圆角)示例代码
2013/07/19 HTML / CSS
详解CSS 3 中的 calc() 方法
2018/01/12 HTML / CSS
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
高级护理专业毕业生推荐信
2013/12/25 职场文书
责任担保书范文
2014/05/21 职场文书
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python