Как я могу получить MAC и IP-адрес связанного клиента в PHP?

Вы пропускаете запятые в конце данных для шин C и E.

Эта строка имеет запятую в конце:

[0,1,0,0,1], [2,0,0,0,0], [1,0,0,0,2], [0,0,1,0,0],   #Bus B

Но эта строка не:

[2,0,-1,-1,-2], [-2,-3,-1,0,0], [-2,0,1,1,1], [1,-1,-1,2,-2] #Bus C
132
задан hakre 18 May 2012 в 22:07
поделиться

5 ответов

Мы можем получить MAC-адрес в Ubuntu этим пути в php

$ipconfig =   shell_exec ("ifconfig -a | grep -Po 'HWaddr \K.*");  
    // display mac address   
 echo $ipconfig;
0
ответ дан 24 November 2019 в 00:11
поделиться

IP-адрес сервера

Вы можете получить IP-адрес сервера из $ _ SERVER ['SERVER_ADDR'] .

MAC-адрес сервера

Для MAC-адреса вы можете проанализировать вывод netstat -ie в Linux или ipconfig / all в Windows.

IP-адрес клиента. адрес

Вы можете получить IP-адрес клиента из $ _ SERVER ['REMOTE_ADDR']

MAC-адрес клиента

MAC-адрес клиента не будет доступен вам, за исключением одного особого случая: если клиент находится в том же сегменте Ethernet, что и сервер.

Итак, если вы строите какую-то систему на основе локальной сети, и ваши клиенты находятся в том же сегменте Ethernet, тогда вы можете получить MAC-адрес путем анализа вывода arp -n (linux) или arp -a (windows).

Изменить : в комментариях вы спрашиваете, как получить вывод внешней команды - один из способов - использовать обратные кавычки, например

$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr=false;

#run the external command, break output into lines
$arp=`arp -a $ipAddress`;
$lines=explode("\n", $arp);

#look for the output line describing our IP address
foreach($lines as $line)
{
   $cols=preg_split('/\s+/', trim($line));
   if ($cols[0]==$ipAddress)
   {
       $macAddr=$cols[1];
   }
}

Но что, если клиент не находится в локальной сети?

Что ж, вам не повезло, если вы не может попросить клиента добровольно передать эту информацию и передать ее другими способами.

179
ответ дан 24 November 2019 в 00:11
поделиться

Я не думаю, что вы можете получить MAC-адрес в PHP, но вы можете получить IP из переменной $ _ SERVER ['REMOTE_ADDR'] .

8
ответ дан 24 November 2019 в 00:11
поделиться

Все, что вам нужно сделать, это поместить arp в другая группа.

По умолчанию:

-rwxr-xr-x 1 root root 48K 2008-11-11 18:11 /usr/sbin/arp*

С командой:

sudo chown root:www-data /usr/sbin/arp

вы получите:

-rwxr-xr-x 1 root www-data 48K 2008-11-11 18:11 /usr/sbin/arp*

И поскольку apache - это демон, работающий под пользовательскими www-данными, теперь он может выполнять эту команду.

Итак, если вы теперь используете PHP-скрипт, например: [

<?php
$mac = system('arp -an');
echo $mac;
?>

], вы получите вывод команды linux arp -an .

6
ответ дан 24 November 2019 в 00:11
поделиться

MAC-адрес клиента (в смысле компьютера, отправившего HTTP-запрос) перезаписывается каждым маршрутизатором между клиентом и сервером.

IP-адрес клиента обычно предоставляется сценарию в $ _ SERVER ['REMOTE_ADDR'] . В некоторых сценариях, особенно если ваш веб-сервер находится за прокси-сервером (например, кэширующим прокси) $ _ SERVER ['REMOTE ADDR'] вернет IP-адрес прокси , и будет быть дополнительным значением, часто $ _ SERVER ['HTTP_X_FORWARDED_FOR'] , которое содержит IP-адрес исходного клиента запроса.

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

22
ответ дан 24 November 2019 в 00:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: