php/js获取客户端mac地址的实现代码

2015-01-24信息快讯网

这篇文章主要介绍了如何在php与js中分别获取客户度mac地址的方法,需要的朋友可以参考下

废话不多讲,直接上代码吧!

<?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图片等比缩放类SimpleImage使用方法和使用实例分享
PHP按行读取、处理较大CSV文件的代码实例
PHP二维数组排序的3种方法和自定义函数分享
php计算几分钟前、几小时前、几天前的几个函数、类分享
PHP中的Memcache详解
PHP中使用memcache存储session的三种配置方法
php的memcache类分享(memcache队列)
PHP使用imagick读取PDF生成png缩略图的两种方法
zf框架的zend_cache缓存使用方法(zend框架)
CodeIgniter框架中_remap()使用方法2例
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
PHPMailer的主要功能特点和简单使用说明
smarty获得当前url的方法分享
PHP获取MAC地址的具体实例
mac下安装nginx和php
php对图像的各种处理函数代码小结
关于PHP语言构造器介绍
php5.5新数组函数array_column使用
PHP 关于访问控制的和运算符优先级介绍
php采集文章中的图片获取替换到本地(实现代码)
php打开文件fopen函数的使用说明
如何修改和添加Apache的默认站点目录
Apache实现Web Server负载均衡详解(不考虑Session版)
如何在Ubuntu下启动Apache的Rewrite功能
如何解决CI框架的Disallowed Key Characters错误提示
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
Smarty foreach控制循环次数的实现详解
php小经验:解析preg_match与preg_match_all 函数
php setcookie(name, value, expires, path, domain, secure) 参数详解
如何在smarty中增加类似foreach的功能自动加载数据
使用HMAC-SHA1签名方法详解
©2014-2024 dbsqp.com