php獲取網卡的MAC地址

<?php
/**
 * 獲取網卡的MAC地址原碼;目前支持WIN/LINUX系統 
 * 獲取機器網卡的物理(MAC)地址
 */

class GetMacAddr {

	var $return_array = array(); // 返回帶有MAC地址的字串數組 
	var $mac_addr;

	function GetMacAddr($os_type) {
		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 -> return_array 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 -> mac_addr = $temp_array[0];
				break;
			} 
		} 
		unset($temp_array);
		return $this -> mac_addr;
	} 

	function forWindows() {
		@exec("ipconfig /all", $this -> return_array);
		if ($this -> return_array)
			return $this -> return_array;
		else {
			$ipconfig = $_SERVER["WINDIR"] . "\system32\ipconfig.exe";
			if (is_file($ipconfig))
				@exec($ipconfig . " /all", $this -> return_array);
			else
				@exec($_SERVER["WINDIR"] . "\system\ipconfig.exe /all", $this -> return_array);
			return $this -> return_array;
		} 
	} 

	function forLinux() {
		@exec("ifconfig -a", $this -> return_array);
		return $this -> return_array;
	} 
} 
// 方法使用
$mac = new GetMacAddr(PHP_OS);
echo $mac -> mac_addr;

?>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章