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 相关文章推荐
一键删除顽固的空文件夹 软件下载
Jan 26 PHP
PHP无刷新上传文件实现代码
Sep 19 PHP
一个简单且很好用的php分页类
Oct 26 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
Apr 08 PHP
PHP中spl_autoload_register()和__autoload()区别分析
May 10 PHP
php查询mssql出现乱码的解决方法
Dec 29 PHP
为你总结一些php信息函数
Oct 21 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
Dec 02 PHP
微信公众号开发客服接口实例代码
Oct 21 PHP
Laravel 自带的Auth验证登录方法
Sep 30 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
Oct 11 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 23 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字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
php网站判断用户是否是手机访问的方法
2013/11/01 PHP
PHP从数组中删除元素的四种方法实例
2017/05/12 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
显示、隐藏密码
2006/07/01 Javascript
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
JavaScript 学习技巧
2010/02/17 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
jQuery 获取URL的GET参数值的小例子
2013/04/18 Javascript
jQuery拖动图片删除示例
2013/05/10 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
JQuery的加载和选择器用法简单示例
2019/05/13 jQuery
js实现聊天对话框
2020/02/08 Javascript
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
Python实现PS图像调整黑白效果示例
2018/01/25 Python
python读取图片任意范围区域
2019/01/23 Python
python的sys.path模块路径添加方式
2020/03/09 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
微软澳洲官方网站:Microsoft Australia
2017/01/10 全球购物
高三政治教学反思
2014/02/06 职场文书
管理工程专业求职信
2014/08/10 职场文书
信访工作汇报材料
2014/10/27 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
学习党史心得体会2016
2016/01/23 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书