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 相关文章推荐
ftp类(example.php)
Oct 09 PHP
PHP 和 MySQL 基础教程(二)
Oct 09 PHP
Apache下禁止php文件被直接访问的解决方案
Apr 25 PHP
PHP实现服务器状态监控的方法
Dec 09 PHP
PHP异常处理Exception类
Dec 11 PHP
php中的常用魔术方法汇总
Feb 14 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
Jun 13 PHP
PHP精确计算功能示例
Nov 29 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
May 11 PHP
php语法检查的方法总结
Jan 21 PHP
PHP-FPM的配置与优化讲解
Mar 15 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
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
初学Javascript的一些总结
2008/11/03 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
2013/11/06 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
javascript合并表格单元格实例代码
2016/01/03 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
python类的方法属性与方法属性的动态绑定代码详解
2017/12/27 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
Python创建或生成列表的操作方法
2019/06/19 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
初一学生评语大全
2014/04/24 职场文书
教师考察材料范文
2014/06/03 职场文书
法人委托书范本格式
2014/09/15 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
swagger如何返回map字段注释
2021/07/03 Java/Android
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL