mac地址是網卡地址一般情況下是無法擷取到使用者的mac地址地的,因為安全限制了瀏覽器所以幾乎不太可能擷取到了,下面拿兩段代碼給大家玩玩。
例1
PHP代碼:
代碼如下 |
複製代碼 |
@exec("arp -a",$array); //執行arp -a命令,結果放到數組$array中 echo ""; 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) ) { $mac = $mac_array[0]; break; } } echo $mac; //輸出用戶端MAC ?> |
例2
代碼如下 |
複製代碼 |
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 " "; // 擷取用戶端 // linux $command = "arp -a {$_SERVER['REMOTE_ADDR']}"; echo $command; echo " "; $result=`{$command}`; // windows $command = "nbtstat -a {$_SERVER['REMOTE_ADDR']}"; echo $command; echo " "; $result=`{$command}`; print_r($result); ?> |
擷取服務端的邏輯沒什麼大問題,可能會存在許可權問題。
擷取用戶端的時候,可能會比較慢,arp/nbstat命令執行會比較慢。
只適用於IE瀏覽器,而且會有警示提示
http://www.bkjia.com/PHPjc/632908.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632908.htmlTechArticlemac地址是網卡地址一般情況下是無法擷取到使用者的mac地址地的,因為安全限制了瀏覽器所以幾乎不太可能擷取到了,下面拿兩段代碼給大家...