php获取server端mac和clientmac的地址

获取servermac

<?php   
/**  
获取网卡的MAC地址原码;眼下支持WIN/LINUX系统  
获取机器网卡的物理(MAC)地址
**/   
class GetmacAddr{ 
    var $result = array(); // 返回带有MAC地址的字串数组 
    var $macAddr;
    /*构造*/
    function __construct($osType){ 
        switch ( strtolower($osType) ){ 
            case "unix": break;
            case "solaris": break;
            case "aix": break;
            case "linux": {
                $this->for_linux_os();
            }break; 
            default: { 
                $this->for_windows_os(); 
            }break; 
        } 
        $temp_array = array(); 
        foreach($this->result 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; 
    }
    /*linux系统中获取方法*/
    function for_linux_os(){ 
        @exec("ifconfig -a", $this->result); 
        return $this->result; 
    }
    /*win系统中的获取方法*/
    function for_windows_os(){ 
        @exec("ipconfig /all", $this->result); 
        if ( $this->result ) {
            return $this->result;
        } else { 
            $ipconfig = $_SERVER["WINDIR"]."\system32\ipconfig.exe";
            if(is_file($ipconfig)) {
                @exec($ipconfig." /all", $this->result);
            } else {
                @exec($_SERVER["WINDIR"]."\system\ipconfig.exe /all", $this->result);
                return $this->result; 
            }
        } 
    } 
} 
?

>


获取clientmac地址:

@exec("arp -a",$array); //运行arp -a命令,结果放到数组$array中
        foreach($array as $value){
            //匹配结果放到数组$mac_array
            if(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;
注:client获取的mac不能在本机測试,仅仅能用别的电脑訪问才干输出

posted @   yxwkaifa  阅读(1654)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· 开发者新选择:用DeepSeek实现Cursor级智能编程的免费方案
· 【译】.NET 升级助手现在支持升级到集中式包管理
· 独立开发经验谈:如何通过 Docker 让潜在客户快速体验你的系统
· 并发编程 - 线程同步(二)
点击右上角即可分享
微信分享提示