php获取server端mac和clientmac的地址[通俗易懂]

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不能在本机測试,仅仅能用别的电脑訪问才干输出

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116355.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jdbc和数据库连接池_常用的数据库连接池

    jdbc和数据库连接池_常用的数据库连接池数据库连接池JDBC数据库连接池的必要性在使用开发基于数据库的web程序时,传统的模式基本是按照以下步骤:在主程序(如servlet beans)中建立数据库连接进行sql操作断开数据库连接这种模式开发,存在的问题:普通的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载到内存中,再验证用户名和密码(大概花费0.05s-1s),需要数据库连接的时候,就向数据库要求一个,执行完成后再断开。这样的方式将会消耗大量的时间。数据库的

    2022年8月8日
    5
  • kali激活成功教程软件_kali渗透教程

    kali激活成功教程软件_kali渗透教程转载请注明出处:https://blog.csdn.net/l1028386804/article/details/84895163VeilEvasion简介VeilEvasion是一个可执行文件,它被用来生成Metasploit的payload,能绕过常见杀软。免责声明:本教程目的只是为了教育,我们不对这些东西会如何使用担任何风险,使用它的后果自负。Veil-Evasion被…

    2022年8月20日
    8
  • ajaxSubmit、ajaxSubmit添加额外数据

    ajaxSubmit、ajaxSubmit添加额外数据varoptions={ async:false, data:{“name”:”name”}, success:function(data){ //resultVO为自用方法 resultVO.checkCode(data,function(data){ if(data){ log(“保存成功”); …

    2025年8月9日
    2
  • ideaspringboot启动_idea运行不出结果

    ideaspringboot启动_idea运行不出结果idea解决Command line is too long. Shorten command line for ServiceStarter or also for Application报错1.在IDEA里找到”.idea===>workspace.xml”2.找到,在里面添加即可

    2022年8月19日
    9
  • golang 2021.5 激活码(最新序列号破解)

    golang 2021.5 激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    257
  • java.sql.SQLException: Field ‘id’ doesn’t have a default value

    java.sql.SQLException: Field ‘id’ doesn’t have a default valuejava.sql.SQLException: Field ‘id’ doesn’t have a default value

    2022年4月25日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号