PHP-php获取客户端的MAC地址?

需求定制 需求定制 主题:1050 回复:2283

PHP-php获取客户端的MAC地址?

想挽留 发布于 2017-10-21 字数 285 浏览 1230 回复 2

可能重复的问题
php能获取客户端的MAC地址吗

用PHP获取访问客户端的MAC地址,不知是否能实现。
在网上没能搜到,寻实现过的同学分享下经验。
提示一下:客户端不是服务器的啊!

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(2

灵芸 2017-10-24 2 楼

php运行在服务器端,要拿也只能拿服务器的MAC地址。

可以使用js获取客户端MAC地址,在传给服务器。此方法比较简单:百度

偏爱自由 2017-10-22 1 楼

PHP是获取客户端的所有信息都是依赖于HTTP协议头信息或者是由客户端主动传送信息,否则是无法自动获取得到。但是由于安全和权限问题HTTP是不会传送客户端的MAC地址,那么剩下的就只有一种方式,那就是客户端自己传送,而对于前端来说JavaScript是无法获取到用户机器的MAC地址的。

对于IE来说可以通过ActiveX来获取,但是对于用户来说是很不友好的,需要用户允许它获取MAC地址信息。或者是Java的Applet也可以获取,但是同样需要用户浏览器允许Applet运行,但目前大多数都禁止了,所以也是不太先靠谱的。除此两个方法之外,别无它法。而对于ARP来说,现大目前很多防火墙软件都屏蔽了,所以也不可行。

以下是我从网上整理的一个ActiveX获取网卡Mac的一小段代码:

<html><head><title>JavaScript获取Mac地址</title>
<meta http-equiv=content-type content="text/html; charset=gb2312">
<script language=JScript event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for=foo>
document.forms[0].txtMACAddr.value=unescape(MACAddr);
document.forms[0].txtIPAddr.value=unescape(IPAddr);
document.forms[0].txtDNSName.value=unescape(sDNSName);

</script>

<script language=jscript event=OnObjectReady(objObject,objAsyncContext) for=foo>
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;
}
</script>

<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY>
<object id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></object>
<object id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></object>
<script language=jscript>
var service = locator.ConnectServer();
var MACAddr ;
var IPAddr ;
var DomainAddr;
var sDNSName;
service.Security_.ImpersonationLevel=3;
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
</script>

<form id="formfoo" name="formbar" action="#" method="post"><input value="" name="txtmacaddr"> <input value="" name="txtipaddr">

<input value="zhupan" name="txtdnsname">
<input type="submit" value="send"></form>
</body>
</html>