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 var_dump()函数的详解
Jun 05 PHP
两级联动select刷新后其值保持不变的实现方法
Jan 27 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
Sep 22 PHP
PHP中遇到的时区问题解决方法
Jul 23 PHP
php仿微信红包分配算法的实现方法
May 13 PHP
基于PHPexecl类生成复杂的报表表头示例
Oct 14 PHP
PHP版微信小店接口开发实例
Nov 12 PHP
php+webSoket实现聊天室示例代码(附源码)
Feb 17 PHP
php-msf源码详解
Dec 25 PHP
php实现将数据做成json的格式给前端使用
Aug 21 PHP
PHP实现的用户注册表单验证功能简单示例
Feb 25 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获取短链接跳转后的真实地址和响应头信息的方法
2014/07/25 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
如何使用PHP对网站验证码进行破解
2015/09/17 PHP
javascript写的日历类(基于pj)
2010/12/28 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
[33:15]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VP VS Mineski
2018/03/31 DOTA
python实现zencart产品数据导入到magento(python导入数据)
2014/04/03 Python
浅谈Python的文件类型
2016/05/30 Python
Python pass详细介绍及实例代码
2016/11/24 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
2018/10/30 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
python读取csv和txt数据转换成向量的实例
2019/02/12 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
python中sys模块是做什么用的
2020/08/16 Python
聊聊python中的异常嵌套
2020/09/01 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
标记环介质访问控制协议
2016/03/27 面试题
商务经理岗位职责
2014/08/03 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
优秀班集体申报材料
2014/12/25 职场文书
离婚协议书怎么写
2015/01/26 职场文书
跑吧孩子观后感
2015/06/10 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
辞职离别感言
2015/08/04 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
HTML基本元素标签介绍
2022/02/28 HTML / CSS