如何使用PHP获取客户端的MAC地址?

时间:2011-02-22 04:52:15

标签: php ip

如何使用PHP或javascript获取MAC地址...

10 个答案:

答案 0 :(得分:36)

MAC地址(低级本地网络接口地址)无法通过IP路由器生存。您无法从远程服务器找到客户端MAC地址。

在本地子网中,MAC地址通过ARP系统映射到IP地址。本地网络上的接口知道如何将IP地址映射到MAC地址。但是,当您的数据包已在本地子网上路由到(并通过)网关到“真正的”Internet时,原始MAC地址将丢失。简单地说,数据包的每个子网到子网跳都涉及每个子网中本地路由的相同类型的IP到MAC映射。

答案 1 :(得分:8)

echo GetMAC();

function GetMAC(){
    ob_start();
    system('getmac');
    $Content = ob_get_contents();
    ob_clean();
    return substr($Content, strpos($Content,'\\')-20, 17);
}

答案 2 :(得分:3)

使用此功能获取客户端MAC地址:

function GetClientMac(){
    $macAddr=false;
    $arp=`arp -n`;
    $lines=explode("\n", $arp);

    foreach($lines as $line){
        $cols=preg_split('/\s+/', trim($line));

        if ($cols[0]==$_SERVER['REMOTE_ADDR']){
            $macAddr=$cols[2];
        }
    }

    return $macAddr;
}

答案 3 :(得分:3)

这是一种可能的方法:

$string=exec('getmac');
$mac=substr($string, 0, 17); 
echo $mac;

答案 4 :(得分:2)

这个想法是,使用命令cmd ipconfig /all并仅提取地址mac。

他的指数$ pmac + 33。

mac的大小是17。

<?php
ob_start();
system('ipconfig /all');
$mycom=ob_get_contents();
ob_clean();
$findme = 'physique';
$pmac = strpos($mycom, $findme);
$mac=substr($mycom,($pmac+33),17);
echo $mac;
?>

答案 5 :(得分:0)

如果客户端运行Windows并允许您安装ActiveX控件,则可以使用javascript获取客户端的MAC地址。

http://www.eggheadcafe.com/community/aspnet/3/10054371/how-to-get-client-mac-address.aspx

http://codingresource.blogspot.com/2010/02/get-client-mac-address-ip-address-using.html

答案 6 :(得分:0)

<?php

    ob_start();
    system('ipconfig/all');
    $mycom=ob_get_contents(); 
    ob_clean(); 
    $findme = "Physical";
    $pmac = strpos($mycom, $findme); 
    $mac=substr($mycom,($pmac+36),17);

    echo $mac;
?>

这将打印客户端计算机的mac地址

答案 7 :(得分:-1)

首先检查您的用户代理OS Linux或Windows或其他。 然后你的操作系统Windows然后这段代码使用:

public function win_os(){ 
    ob_start();
    system('ipconfig-a');
    $mycom=ob_get_contents(); // Capture the output into a variable
    ob_clean(); // Clean (erase) the output buffer
    $findme = "Physical";
    $pmac = strpos($mycom, $findme); // Find the position of Physical text
    $mac=substr($mycom,($pmac+36),17); // Get Physical Address

    return $mac;
   }

您的操作系统Linux Ubuntu或Linux然后此代码使用:

public function unix_os(){
    ob_start();
    system('ifconfig -a');
    $mycom = ob_get_contents(); // Capture the output into a variable
    ob_clean(); // Clean (erase) the output buffer
    $findme = "Physical";
    //Find the position of Physical text 
    $pmac = strpos($mycom, $findme); 
    $mac = substr($mycom, ($pmac + 37), 18);

    return $mac;
    }

此代码可能适用于OS X.

答案 8 :(得分:-1)

获取客户端设备的ip和mac地址

range = [1:20 , 22, 44:a];
for i = range
    % Do stuff
end

答案 9 :(得分:-5)

//Simple & effective way to get client mac address
// Turn on output buffering
ob_start();
//Get the ipconfig details using system commond
system('ipconfig /all');

// Capture the output into a variable

    $mycom=ob_get_contents();

// Clean (erase) the output buffer

    ob_clean();

$findme = "Physical";
//Search the "Physical" | Find the position of Physical text
$pmac = strpos($mycom, $findme);

// Get Physical Address
$mac=substr($mycom,($pmac+36),17);
//Display Mac Address
echo $mac;