好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php获取客户端mac地址程序代码 - php高级应用

php获取客户端mac地址程序代码

mac地址是网卡地址一般情况下是无法获取到用户的mac地址地的,因为安全限制了浏览器所以几乎不太可能获取到了,下面拿两段代码给大家玩玩.

例1,PHP代码如下:

<?php    @ exec ( "arp -a" , $array );  //执行arp -a命令,结果放到数组$array中      echo   "<pre>" ;    print_r( $array );  //打印获取的数组          foreach ( $array   as   $value )    {         if (  //匹配结果放到数组$mac_array          strpos ( $value , $_SERVER [ "REMOTE_ADDR" ]) &&        preg_match( "/(:?[0-9a-f]{2}[:-]){5}[0-9a-f]{2}/i" , $value , $mac_array )        ) //开源代码phpfensi测试数据         {             $mac  =  $mac_array [0];             break ;        }    }     echo   $mac ;  //输出客户端MAC   ?> 

例2,代码如下:

<?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获取客户端mac地址程序代码 - php高级应用的详细内容...

  阅读:58次