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 和 MySQL 开发的 8 个技巧
Oct 09 PHP
再次研究下cache_lite
Feb 14 PHP
php判断手机访问还是电脑访问示例分享
Jan 20 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
Nov 19 PHP
分享自定义的几个PHP功能函数
Apr 15 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
php结合mysql与mysqli扩展处理事务的方法
Jun 29 PHP
Linux平台PHP5.4设置FPM线程数量的方法
Nov 09 PHP
php mysql获取表字段名称和字段信息的三种方法
Nov 13 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
Mar 13 PHP
phpinfo无法显示的原因及解决办法
Feb 15 PHP
PHP dirname功能及原理实例解析
Oct 28 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购物车代码
2020/06/05 PHP
JavaScript 判断浏览器类型及版本
2009/02/21 Javascript
javascript 三种编解码方式
2010/02/01 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
jquery实现滑动特效代码
2015/08/10 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
原生js仿jquery一些常用方法(必看篇)
2016/09/20 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
ES6入门教程之Iterator与for...of循环详解
2017/05/17 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
详释JavaScript执行环境与执行栈
2019/04/02 Javascript
[47:03]Ti4第二日主赛事败者组 LGD vs iG 2
2014/07/21 DOTA
python读取txt文件并取其某一列数据的示例
2019/02/19 Python
django基于存储在前端的token用户认证解析
2019/08/06 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
详解CSS3浏览器兼容
2016/12/14 HTML / CSS
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
2014/09/15 HTML / CSS
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
财务管理专业自荐书
2014/09/02 职场文书
一份文言文检讨书
2014/09/13 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
项目负责人岗位职责
2015/02/15 职场文书
文艺部部长竞选稿
2015/11/21 职场文书
Oracle以逗号分隔的字符串拆分为多行数据实例详解
2021/07/16 Oracle
Python可视化学习之matplotlib内置单颜色
2022/02/24 Python
Redis 限流器
2022/05/15 Redis
DQL数据查询语句使用示例
2022/12/24 MySQL
html,css,javascript是怎样变成页面的
2023/05/07 HTML / CSS