Вы пропускаете запятые в конце данных для шин 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
Мы можем получить MAC-адрес в Ubuntu этим пути в php
$ipconfig = shell_exec ("ifconfig -a | grep -Po 'HWaddr \K.*");
// display mac address
echo $ipconfig;
Вы можете получить IP-адрес сервера из $ _ SERVER ['SERVER_ADDR']
.
Для MAC-адреса вы можете проанализировать вывод netstat -ie
в Linux или ipconfig / all
в Windows.
Вы можете получить IP-адрес клиента из $ _ SERVER ['REMOTE_ADDR']
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];
}
}
Что ж, вам не повезло, если вы не может попросить клиента добровольно передать эту информацию и передать ее другими способами.
Я не думаю, что вы можете получить MAC-адрес в PHP, но вы можете получить IP из переменной $ _ SERVER ['REMOTE_ADDR']
.
Все, что вам нужно сделать, это поместить 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
.
MAC-адрес клиента (в смысле компьютера, отправившего HTTP-запрос) перезаписывается каждым маршрутизатором между клиентом и сервером.
IP-адрес клиента обычно предоставляется сценарию в $ _ SERVER ['REMOTE_ADDR']
. В некоторых сценариях, особенно если ваш веб-сервер находится за прокси-сервером (например, кэширующим прокси) $ _ SERVER ['REMOTE ADDR']
вернет IP-адрес прокси , и будет быть дополнительным значением, часто $ _ SERVER ['HTTP_X_FORWARDED_FOR']
, которое содержит IP-адрес исходного клиента запроса.
Иногда, особенно когда вы имеете дело с анонимным прокси-сервером, который вы не контролируете, прокси не возвращает реальный IP-адрес, и все, на что вы можете надеяться, - это IP-адрес прокси.