Получить MAC-адрес с компьютера клиента

Я новичок в этом, и я провел поиск, но большинство ответов имеют те же результаты: вывод MAC-адреса отображается как «Найдено».

Мой код ниже:

$ip = $_SERVER['REMOTE_ADDR'];
$mac=shell_exec("arp -a ".$ip);
$mac_string = shell_exec("arp -a $ip");
$mac_array = explode(" ",$mac_string);
$mac = $mac_array[3];

if(empty($mac)) {
die("No mac address for $ip not found");
}

echo($ip." - ".$mac);

0

Решение

Ах, старый exec() против shell_exec() против passthru() вопрос.

Чтобы увидеть, что команда на самом деле быть запущенным, и что это за система на самом деле возвращение, использование exec()и передать его int и array как его 2-й и 3-й параметры соответственно, то var_dump() они оба после запуска команды.

Например:

$cmd = "arp -a " . $ip;
$status = 0;
$return = [];
exec($cmd, $return, $status);
var_dump($status, $return);
die;

Если все прошло хорошо, то $status должно быть ноль и $return может или не может быть пустым. Однако если $status является ненулевая затем обратите внимание на то, что значение $return Это то, что ваша система сообщает вам, когда она пытается выполнить вашу команду.

Protip: Pass exec() полный путь в arp как в:

#> which arp
/usr/sbin/arp

$cmd = "/usr/sbin/arp -a" . $ip;

Кроме того, имейте в виду, в зависимости от того, где команда запускается, REMOTE_ADDR может не вернуть ничего полезного. Есть несколько других способов получения IP-адреса, которые особенно полезны, если нужный вам IP-адрес находится за каким-то прокси-сервером.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]