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 相关文章推荐
第十一节 重载 [11]
Oct 09 PHP
PHP之短标签开启设置
Jun 17 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
Jun 28 PHP
php生成缩略图填充白边(等比缩略图方案)
Dec 25 PHP
thinkphp特殊标签用法概述
Nov 24 PHP
php array_merge函数使用需要注意的一个问题
Mar 30 PHP
PHP安装threads多线程扩展基础教程
Nov 17 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
PHP利用Mysql锁解决高并发的方法
Sep 04 PHP
PHP利用递归函数实现无限级分类的方法
Mar 22 PHP
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
Apr 01 PHP
详解PHP服务器如何在有限的资源里最大提升并发能力
May 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
关于PHP5 Session生命周期介绍
2010/03/02 PHP
PHP中strtr字符串替换用法详解
2014/11/26 PHP
基于php判断客户端类型
2016/10/14 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
使用PHP访问RabbitMQ消息队列的方法示例
2018/06/06 PHP
PDO::errorInfo讲解
2019/01/28 PHP
srcElement表格样式
2006/09/03 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
2013/01/17 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
jquery统计复选框选中示例
2013/11/05 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
jQuery实现多按钮单击变色
2014/11/27 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
2015/03/05 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
angular或者js怎么确定选中ul中的哪几个li
2017/08/16 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
基于JavaScript判断两个对象内容是否相等
2020/01/10 Javascript
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
PyQT实现多窗口切换
2018/04/20 Python
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
python3爬取torrent种子链接实例
2020/01/16 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
金宝贝童装官网:Gymboree
2016/08/31 全球购物
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
大学班级文化建设方案
2014/05/06 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
想要创业,那么你做好准备了吗?
2019/07/01 职场文书
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL