Как получить MAC-адрес клиента с помощью PHP? - PullRequest
40 голосов
/ 22 февраля 2011

Как я могу получить MAC-адрес, используя PHP или JavaScript ...

Ответы [ 10 ]

36 голосов
/ 22 февраля 2011

MAC-адрес (низкоуровневый адрес интерфейса локальной сети) не выдерживает скачки через IP-маршрутизаторы. Вы не можете найти MAC-адрес клиента с удаленного сервера.

В локальной подсети MAC-адреса сопоставляются с IP-адресами через систему ARP. Интерфейсы в локальной сети знают, как сопоставить IP-адреса с MAC-адресами. Однако, когда ваши пакеты были направлены в локальной подсети на (и через) шлюз в «реальный» Интернет, исходный MAC-адрес теряется. Упрощенно, каждый переход подсети в подсеть ваших пакетов включает в себя один и тот же тип сопоставления IP-MAC для локальной маршрутизации в каждой подсети.

8 голосов
/ 30 сентября 2016
echo GetMAC();

function GetMAC(){
    ob_start();
    system('getmac');
    $Content = ob_get_contents();
    ob_clean();
    return substr($Content, strpos($Content,'\\')-20, 17);
}
3 голосов
/ 22 апреля 2017

Вот один из возможных способов сделать это:

$string=exec('getmac');
$mac=substr($string, 0, 17); 
echo $mac;
3 голосов
/ 12 августа 2016

Используйте эту функцию для получения 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;
}
2 голосов
/ 09 декабря 2016

Идея в том, чтобы с помощью команды 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;
?>
0 голосов
/ 02 июня 2019
<?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-адрес клиентского компьютера

0 голосов
/ 19 июля 2017

Чтобы узнать ip и mac адрес устройства клиента

{
    if (isset($_SERVER['HTTP_CLIENT_IP']))
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_X_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else if(isset($_SERVER['REMOTE_ADDR']))
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';

    $macCommandString   =   "arp " . $ipaddress . " | awk 'BEGIN{ i=1; } { i++; if(i==3) print $3 }'";

    $mac = exec($macCommandString);

    return ['ip' => $ipaddress, 'mac' => $mac];
}
0 голосов
/ 08 ноября 2016

Сначала вы проверите свой пользовательский агент ОС 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.

0 голосов
/ 10 марта 2014
//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;
0 голосов
/ 22 февраля 2011

Вы можете получить MAC-адрес клиента в javascript, если он работает под управлением Windows и позволяет установить элемент управления ActiveX.

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

...