php/js获取客户端mac地址示例代码

发布时间:2020-07-11编辑:脚本学堂
分享下使用php与js分别获取客户端mac地址的代码,有需要的朋友做个参考。

例1,php获取客户端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命令执行会比较慢。

例2,js获取客户端mac地址。
 

复制代码 代码示例:
<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浏览器,而且会有告警提示。