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之第三天
Oct 09 PHP
php xfocus防注入资料
Apr 27 PHP
PHP取二进制文件头快速判断文件类型的实现代码
Aug 05 PHP
php获取目标函数执行时间示例
Mar 04 PHP
又一个PHP实现的冒泡排序算法分享
Aug 21 PHP
PHP中new static() 和 new self() 的区别介绍
Jan 09 PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 PHP
PHP sleep()函数, usleep()函数
Aug 25 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
浅析PHP7的多进程及实例源码
Apr 14 PHP
php生成静态页面并实现预览功能
Jun 27 PHP
WordPress伪静态规则设置代码实例
Dec 10 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版国家代码、缩写查询函数代码
2011/08/14 PHP
php中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
jQuery1.6 使用方法一
2011/11/23 Javascript
根据json字符串生成Html的一种方式
2013/01/09 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
javascript实现的一个带下拉框功能的文本框
2014/05/08 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
后台获取ZTREE选中节点的方法
2015/02/12 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
JS验证码实现代码
2017/09/14 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
JS实现简单打字测试
2020/06/24 Javascript
利用Vue实现简易播放器的完整代码
2020/12/30 Vue.js
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
python新手学习使用库
2020/06/11 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
火车的故事教学反思
2014/02/11 职场文书
婚宴邀请函
2015/01/30 职场文书
社区元宵节活动总结
2015/02/06 职场文书
求职自我评价参考范文
2019/05/16 职场文书
导游词之大雁塔景区
2019/09/17 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
教你部署vue项目到docker
2022/04/05 Vue.js
Nginx报404错误的详细解决方法
2022/07/23 Servers