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;

?>


你可能感兴趣的:(PHP)