PHP获取设备Mac地址唯一标识

PHP本身不提供查找功能,您需要调用特定于平台的工具如ipconfig来获取信息。

下面是相关代码:

public $return_array = array(); // 返回带有MAC地址的字串数组
public $mac_addr; //mac地址

public function getMacAddress($os_type)
{
    switch(strtolower($os_type))
    {
        case "linux":$this->forLinux();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;
}

/**
 * @return array
 * window
 */
public 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;
    }
}

/**
 * @return array
 * linux
 */
public function forLinux()
{
    @exec("ifconfig -a", $this->return_array);
    return $this->return_array;
}


//调用:
$this->getMacAddress(PHP_OS);
var_dump($this->mac_addr);