用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

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

时间:2015-01-23  来源:西部数据  作者:西部数据

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

例1,PHP代码如下:

  1. <?php 
  2.   @exec("arp -a",$array); //执行arp -a命令,结果放到数组$array中 
  3.   echo "<pre>"
  4.   print_r($array); //打印获取的数组 
  5.    
  6.   foreach($array as $value
  7.   { 
  8.       if//匹配结果放到数组$mac_array 
  9.       strpos($value,$_SERVER["REMOTE_ADDR"]) && 
  10.       preg_match("/(:?[0-9a-f]{2}[:-]){5}[0-9a-f]{2}/i",$value,$mac_array
  11.       )//开源代码phpfensi.com 
  12.       { 
  13.           $mac = $mac_array[0]; 
  14.           break
  15.       } 
  16.   } 
  17.   echo $mac//输出客户端MAC 
  18. ?> 

例2,代码如下:

  1. <?php    
  2. class MacAddr  
  3. {    
  4.     public $returnArray = array();     
  5.     public $macAddr;    
  6.    
  7.     function __contruct($os_type=null){  
  8.         if(is_null($os_type)) $os_type = PHP_OS;    
  9.         switch (strtolower($os_type)){    
  10.         case "linux":    
  11.             $this->forLinux();    
  12.             break;    
  13.         case "solaris":    
  14.             break;    
  15.         case "unix":    
  16.             break;    
  17.         case "aix":    
  18.             break;    
  19.         default:    
  20.             $this->forWindows();    
  21.             break;    
  22.         }    
  23.         $temp_array = array();    
  24.         foreach($this->returnArray as $value ){    
  25.             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)){    
  26.                 $this->macAddr = $temp_array[0];    
  27.                 break;    
  28.             }    
  29.         }    
  30.         unset($temp_array);    
  31.         return $this->macAddr;    
  32.     }  
  33.    
  34.     function forWindows(){    
  35.         @exec("ipconfig /all"$this->returnArray);    
  36.         if($this->returnArray)    
  37.             return $this->returnArray;    
  38.         else{    
  39.             $ipconfig = $_SERVER["WINDIR"]."system32ipconfig.exe";    
  40.             if (is_file($ipconfig))    
  41.                 @exec($ipconfig." /all"$this->returnArray);    
  42.             else   
  43.                 @exec($_SERVER["WINDIR"]."systemipconfig.exe /all"$this->returnArray);    
  44.             return $this->returnArray;    
  45.         }    
  46.     }  
  47.    
  48.     function forLinux(){    
  49.         @exec("ifconfig -a"$this->returnArray);    
  50.         return $this->returnArray;    
  51.     }    
  52. }    
  53.    
  54. $mac = new MacAddr(PHP_OS);    
  55. echo $mac->macAddr;    
  56. echo "<br />";  
  57.    
  58. // 获取客户端  
  59. // linux  
  60. $command = "arp -a {$_SERVER['REMOTE_ADDR']}";  
  61. echo $command;  
  62. echo "<br />";  
  63. $result=`{$command}`;   
  64.    
  65. // windows  
  66. $command = "nbtstat -a {$_SERVER['REMOTE_ADDR']}";  
  67. echo $command;  
  68. echo "<br/>";  
  69. $result=`{$command}`;   
  70. print_r($result);    
  71. ?> 

获取服务端的逻辑没什么大问题,可能会存在权限问题,获取客户端的时候,可能会比较慢,arp/nbstat命令执行会比较慢,代码如下:

  1. <script language="JScript" event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for="foo">     
  2. document.forms[0].lbMacAddr.value=unescape(MACAddr);     
  3. </script>    
  4. <script language="JScript" event="OnObjectReady(objObject,objAsyncContext)" for="foo">     
  5. if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true && objObject.MACAddress != null && objObject.MACAddress != "undefined") MACAddr = objObject.MACAddress;     
  6. </script>    
  7. <object id="locator" classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6"></object>    
  8. <object id="foo" classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223"></object>    
  9. <script language="JScript">     
  10. var service = locator.ConnectServer();     
  11. var MACAddr ;     
  12. var IPAddr ;     
  13. var DomainAddr;     
  14. var sDNSName;     
  15. service.Security_.ImpersonationLevel=3;     
  16. service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');     
  17. </script>    
  18. <form><input type="text" id='lbMacAddr' name='lbMacAddr' /></form> 

只适用于IE浏览器,而且会有告警提示.

来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门