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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 窗宽窗位

    窗宽窗位转自“CT诊断学”中的窗宽窗位部分。窗宽与窗位CT能识别人体内2000个不同灰阶的密度差别。而人的眼睛却只能分辨16个灰阶度。因此,人眼在CT图像上能分辨的CT值应为125Hu(2000/16)。换句话说,人体内不同组织CT值只有相差125Hu以上,才能为人眼所识别。人体软组织CT值多变化在20-50Hu之间,人眼就无法识别。为此,必须进行分段观察,才能使

    2022年6月15日
    66
  • crumpling_relabelling

    crumpling_relabellingTheRingBufferisadatastructurewherethedataisstoredinaring-likestructure.Youcanthinkofitasacirculararraywithacertaincapacity.Inthiscirculararray,theoldestitemgetsoverwrittenincaseanewitemiswrittenwhenthemaximumc

    2025年10月20日
    5
  • IDEA—IDEA使用Tomcat服务器出现乱码问题

    Idea结合Tomcat,访问JSP页面使用response输出,出现了乱码!!!

    2022年2月26日
    41
  • mediumtext_text长度不够用,改为mediumtext感觉 又太大,有没什么方法?

    mediumtext_text长度不够用,改为mediumtext感觉 又太大,有没什么方法?楼主先要搞清楚,text和longtext这些都是可变长度的字段类型.这是phpMyAdmin里的说明:text:最多存储65535(2^16-1)字节的文本字段,存储时在内容前使用2字节表示内容的字节数.longtext:最多存储4294967295字节即4GB(2^32-1)的文本字段,存储时在内容前使用4字节表示内容的字节数.也就是说,你在longtext类型的字段里只存1个字符,占用空…

    2022年5月1日
    81
  • 大数据管理平台(一)概述「建议收藏」

    大数据管理平台(一)概述「建议收藏」系列文章目录文章目录系列文章目录前言一、功能概述二、使用步骤2.1安装2.2监控2.3管理2.4用户管理2.5应用市场2.6操作系统三、总结前言做大数据有几年了,这些年耳濡目染了一些大数据管理平台的使用,但是或多或少使用起来,都不怎么方便,所以决定自己来实现一个简单的大数据平台一、功能概述大数据应用组件往往很多,可能几百台服务器组成一个Hadoop集群,当部署这些节点时,需要一个节点一个节点的操作,简直不敢想象。同时在这些服务器上可能还部署着Spark、Flink、Hive

    2022年5月1日
    49
  • 深入浅出谈开窗函数(一)

    深入浅出谈开窗函数(一)

    2021年11月29日
    35

发表回复

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

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