2018-07-16 10:56:11 3067次浏览 6条回答 0 悬赏 200 金钱

别在网上找那些什么 XXXXPHP 获取 MAC 地址,那些都是假的,只能在局域网使用,嘿嘿...

补充于 2018-07-19 09:53

NONONO 测试过了,VPN能改变IP

  • 回答于 2018-07-16 10:59 举报
    <?php   
    class MacAddr 
    {   
        public $returnArray = array();    
        public $macAddr;   
    
        function __contruct($os_type=null){ 
            if(is_null($os_type)) $os_type = PHP_OS;   
            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->returnArray 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;   
        } 
    
        function forWindows(){   
            @exec("ipconfig /all", $this->returnArray);   
            if($this->returnArray)   
                return $this->returnArray;   
            else{   
                $ipconfig = $_SERVER["WINDIR"]."system32ipconfig.exe";   
                if (is_file($ipconfig))   
                    @exec($ipconfig." /all", $this->returnArray);   
                else  
                    @exec($_SERVER["WINDIR"]."systemipconfig.exe /all", $this->returnArray);   
                return $this->returnArray;   
            }   
        } 
    
        function forLinux(){   
            @exec("ifconfig -a", $this->returnArray);   
            return $this->returnArray;   
        }   
    }   
    
    $mac = new MacAddr(PHP_OS);   
    echo $mac->macAddr;   
    echo "<br />"; 
    
    // 获取客户端 
    // linux 
    $command = "arp -a {$_SERVER['REMOTE_ADDR']}"; 
    echo $command; 
    echo "<br />"; 
    $result=`{$command}`;  
    
    // windows 
    $command = "nbtstat -a {$_SERVER['REMOTE_ADDR']}"; 
    echo $command; 
    echo "<br />"; 
    $result=`{$command}`;  
    print_r($result);   
    ?>
    
    1 条回复
    回复于 2018-07-16 11:01 回复

    假的,这个只能再局域网使用 ,

  • 回答于 2018-07-16 16:30 举报

    绿天伤,在服务端用 arp -a 可以看到客户端的 MAC 地址

    @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;
    
    7 条回复
    回复于 2018-07-16 17:18 回复

    NONONO! 这个只能在局域网使用,放到线上就不行了

    回复于 2018-07-16 17:20 回复

    那你只能咨询黑客了

    回复于 2018-07-17 00:04 回复

    没用的狗群主,说扔就扔

    回复于 2018-07-17 08:57 回复

    牛逼.

    回复于 2018-07-17 17:43 回复
    回复于 2018-07-19 11:19 回复

    exec风险是不是太大了

    回复于 2018-09-17 17:15 回复

    天秀

  • 回答于 2018-07-19 09:42 举报

    你可以获取电脑的ip ip是唯一的

    1 条回复
    回复于 2018-07-19 09:54 回复

    NONONO 测试过了,VPN或代理软件能改变IP,MAC 才是具有唯一性的

  • 回答于 2018-07-21 12:47 举报

    B/S模型下经过复杂的网络,纯粹的从服务器端是拿不到mac地址的。NAT转换的时候,链路层的数据已经被路由器替换了,一般都会替换最原始的mac,ip。需要客户端做辅助才是正解。

  • 回答于 2018-07-21 12:47 举报

    B/S模型下经过复杂的网络,纯粹的从服务器端是拿不到mac地址的。NAT转换的时候,链路层的数据已经被路由器替换了,一般都会替换最原始的mac,ip。需要客户端做辅助才是正解。

  • 回答于 2018-07-31 22:08 举报

    纯php感觉无解,以前见过用flash作的唯一客户端标识工具,或者你可以查查各类统计脚本如何做的。

您需要登录后才可以回答。登录 | 立即注册
洛天伤
董事长

洛天伤 Yii最帅的小伙子

注册时间:2017-02-14
最后登录:2024-11-01
在线时长:3856小时53分
  • 粉丝19
  • 金钱30455
  • 威望20
  • 积分69215

热门问题