源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-04-01 08:15 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:php/js获取客户端mac地址的实现代码
废话不多讲,直接上代码吧!
[u]复制代码[/u] 代码如下:
<?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命令执行会比较慢。
[u]复制代码[/u] 代码如下:
<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浏览器,而且会有告警提示,挺遗憾的。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部