PHP是获取客户端的所有信息都是依赖于HTTP协议头信息或者是由客户端主动传送信息,否则是无法自动获取得到。但是由于安全和权限问题HTTP是不会传送客户端的MAC地址,那么剩下的就只有一种方式,那就是客户端自己传送,而对于前端来说JavaScript是无法获取到用户机器的MAC地址的。
对于IE来说可以通过ActiveX来获取,但是对于用户来说是很不友好的,需要用户允许它获取MAC地址信息。或者是Java的Applet也可以获取,但是同样需要用户浏览器允许Applet运行,但目前大多数都禁止了,所以也是不太先靠谱的。除此两个方法之外,别无它法。而对于ARP来说,现大目前很多防火墙软件都屏蔽了,所以也不可行。以下是我整理的一个ActiveX获取网卡Mac的一小段代码,可以参考一下:
wmi scripting htmldocument.forms[0].txtIPAddr.value=unescape(IPAddr);
document.forms[0].txtDNSName.value=unescape(sDNSName);
if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled ==true)
{
if(objObject.MACAddress != null && objObject.MACAddress != "undefined")
MACAddr = objObject.MACAddress;
if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) !="undefined")
IPAddr = objObject.IPAddress(0);
if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined")
sDNSName = objObject.DNSHostName;
}
var service = locator.ConnectServer();
var MACAddr ;
var IPAddr ;
var DomainAddr;
var sDNSName;
service.Security_.ImpersonationLevel=3;
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');