您正在使用IPV4(54.161.98.96)访问本站 您本次共访问本站 1 次
 用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器 行情 简化版
文明驾车我带头,文明行路我带头,礼貌让座我带头      

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年74元      
[公益] 节省一分零钱 献出一份爱心 温暖世间真情      
2022年 情人节 18
2022年 元宵节 19
2023年 元 旦 339
2022年 春 节 5
 
  • 本类新增
    本类热门文章
    您现在的位置:首页 >> PHP >> 内容
    php获取本机mac地址三种方法
    内容摘要: //方法一classgetmacaddr{var$return_array=array();//返回带有mac地址的字串数组var$mac_addr;functiongetmacaddr($os_type){switch(strtolower($os_type)){case'linux':$this-forlinux();break;case'solaris......
    //方法一

    classgetmacaddr

    {

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

    var$mac_addr;

    functiongetmacaddr($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_arrayas$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;

    }

    functionforwindows()

    {

    @exec("ipconfig/all",$this->return_array);

    if($this->return_array)

    return$this->return_array;

    else{

    $ipconfig=$_server["windir"]."system32ipconfig.exe";

    if(is_file($ipconfig))

    @exec($ipconfig."/all",$this->return_array);

    else

    @exec($_server["windir"]."systemipconfig.exe/all",$this->return_array);

    return$this->return_array;

    }

    }

    functionforlinux()

    {

    @exec("ifconfig-a",$this->return_array);

    return$this->return_array;

    }

    }

    ?>

    <?

    $mac=newgetmacaddr(php_os);

    echo$mac->mac_addr;

    //方法二

    qstringgetlocalmac()

    {

    intsock_mac;

    structifreqifr_mac;

    charmac_addr[30];

    sock_mac=socket(af_inet,sock_stream,0);

    if(sock_mac==-1)

    {

    perror("createsocketfalise...mac");

    return"";

    }

    memset(&ifr_mac,0,sizeof(ifr_mac));

    strncpy(ifr_mac.ifr_name,"eth0",sizeof(ifr_mac.ifr_name)-1);

    if((ioctl(sock_mac,siocgifhwaddr,&ifr_mac))<0)

    {

    printf("macioctlerror");

    return"";

    }

    sprintf(mac_addr,"%02x%02x%02x%02x%02x%02x",

    (unsignedchar)ifr_mac.ifr_hwaddr.sa_data[0],

    (unsignedchar)ifr_mac.ifr_hwaddr.sa_data[1],

    (unsignedchar)ifr_mac.ifr_hwaddr.sa_data[2],

    (unsignedchar)ifr_mac.ifr_hwaddr.sa_data[3],

    (unsignedchar)ifr_mac.ifr_hwaddr.sa_data[4],

    (unsignedchar)ifr_mac.ifr_hwaddr.sa_data[5]);

    printf("localmac:%s",mac_addr);

    close(sock_mac);

    returnqstring(mac_addr);

    }

    //用c实现的,代码如下:

    intgetalllocaladaptermacaddr(std::list<std::vector<unsignedchar>>&mac)

    {

    ncbncb;

    lana_enumadapterlist;

    memset(&ncb,0,sizeof(ncb));

    ncb.ncb_command=ncbenum;

    ncb.ncb_buffer=(unsignedchar*)&adapterlist;

    ncb.ncb_length=sizeof(adapterlist);

    netbios(&ncb);

    mac.resize(0);

    for(inti=0;i<adapterlist.length;++i)

    {

    structastat

    {

    adapter_statusadapt;

    name_bufferps教程z_name[30];

    }adapter;

    //resetthelanadaptersothatwecanbeginqueryingit

    ncbncb;

    memset(&ncb,0,sizeof(ncb));

    ncb.ncb_command=ncbreset;

    ncb.ncb_lana_num=adapterlist.lana[i];

    if(netbios(&ncb)!=nrc_goodret)

    continue;

    //preparetogettheadapterstatusblock

    memset(&ncb,0,sizeof(ncb));

    ncb.ncb_command=ncbastat;

    ncb.ncb_lana_num=adapterlist.lana[i];

    strcpy((char*)ncb.ncb_callname,"*");

    memset(&adapter,0,sizeof(adapter));

    ncb.ncb_buffer=(unsignedchar*)&adapter;

    ncb.ncb_length=sizeof(adapter);

    //gettheadapter'sinfoand,ifthisworks,returnitinstandard,

    //colon-delimitedform.

    if(netbios(&ncb)==0)

    {

    std::vector<unsignedchar>v6;

    v6.resize(6);

    for(inti=0;i<6;i++)

    v6[i]=adapter.adapt.adapter_address[i];

    if(v6[0]==0)

    {

    std::list<std::vector<unsignedchar>>::iteratori=mac.begin();

    for(;i!=mac.end();i++)if(*i==v6)

    break;

    if(i==mac.end())

    mac.push_back(v6);

    }

    }

    else

    break;

    }

    return0;//开源代码phpfensi.com

    }

    上一篇:PHP调用linux命令详细说明 下一篇:php 自定生成随机密码函数
    发布日期:2022/1/11
    手机扫二维码直达本页
    发布时间:12:35:48
    点击:202
    录入:哲哲
    相关文章
    Baidu
    YiJiaCMS 6.1.0.10988 Build 21.12.28(MSSQL) 闽ICP备05000814号-1
    本空间由腾讯云(轻量应用服务器)提供,百度云加速提供加速防护

    Copyright©2000-2022