PHP:获取MAC地址

时间:2018-06-17 19:22:49

标签: php

我查了几个脚本,所以我可以显示我的MAC地址,但无济于事。 我请求你的帮助! 这是我到目前为止测试的,但没有正常工作:

<?php
require_once 'MacAddress.php'; //https://github.com/BlakeGardner/php-mac-address/blob/master/src/BlakeGardner/MacAddress.php
use BlakeGardner\MacAddress;
echo "Current MAC address: ";
var_dump(MacAddress::getCurrentMacAddress('eth0'));
echo "Randomly generated MAC address: ";
var_dump(MacAddress::generateMacAddress()); // Generat all refresh a new address
?>

- 4G或ADSL上所有手机/桌面上的当前MAC地址EC:A8:6B:F1:D2:B0 - 随机生成的MAC地址:每次运行脚本时,MAC地址输出都会略有不同。我怀疑它是因为时间和延迟信息在计数中发生了变化。是否有更有效的方法来拉取mac地址?

<?php
class env
{
public static $IP;
public static $MAC;
public function getIP()
{
env::$IP = $_SERVER['REMOTE_ADDR'];
}
public function getMAC($ip)
{
$macCommandString = "arp $ip | awk 'BEGIN{ i=1; } { i++; if(i==3) print $3 }'";
$mac = exec($macCommandString);
env::$MAC = $mac;
}
function __construct()
{
$this->getIP();
$this->getMAC(env::$IP);
}
}
$envObj = new env();
echo "MAC : ".env::$MAC."<br>";
echo "IP : ".env::$IP;
?>

- MAC为空 - IP是我在myip.com上的相同IP

<?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;  // Empty

$macLookup = 'MAC Address: ';
$pos = strpos($ping, $macLookup);

if ($pos !== false) {$mac = substr($ping, $pos+strlen($macLookup), 17 );
echo $mac; // Empty
}
?>

- $ mac为空

你能帮我吗?

2 个答案:

答案 0 :(得分:2)

  

当前MAC地址EC:A8:6B:F1:D2:B0在我的所有手机/台式机上使用4G或ADSL

PHP代码在Web服务器上运行。

因此,PHP程序打印出的MAC地址将是服务器上网络接口的地址。

您将始终获得相同的值,因为它始终检查服务器上相同网络接口的地址。

在运行浏览器的位置并不重要,代码将始终在同一位置运行,并始终获得相同的代码。

如果想要获取您实际使用的设备的MAC地址,则需要在该设备上运行该代码。 (这可能意味着换成另一种语言)。

答案 1 :(得分:0)

在linux服务器上获取自己的mac地址

$mac = shell_exec("ifconfig -a | grep -Po 'HWaddr \K.*$'");

var_dump($mac);

这将给出运行PHP的服务器的mac地址