日期:2014-05-17  浏览次数:20596 次

php获取客户端MAC和IP地址 js代码嵌入失败
经过各种百度,各种搜索,得出的结论是,php代码只能获得服务器mac,无法获取客户端mac,ip地址也只能获取客户端外网ip,不能获得内网实际ip(192.168.1.***)

于是转向用js的方法,照搬网上搜来的程序,貌似大家都用的下面的方法,但存在两个致命问题。

1、生成html文件可以直接运行获得mac和ip地址,但只能在ie浏览器下,并且需要获得用户许可运行activex控件,谷歌、firefox、safari根本就无法响应。

2、将里面的js代码嵌入php就不行了,本地localhost测试总是报错(无法识别,***为空等),上传到服务器上当然也不行了。

很头疼,第一个问题估计无法解决,第二个问题可能是我自己的原因,有没有在php页面用localhost调试成功的?
<html>
<head>
  <title>WMI Scripting HTML</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);
//document.formbar.submit();
  </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="index.do" method="post">
  <input value="00-11-11-B4-52-EF" name="txtMACAddr">
  <input value="210.42.38.50" name="txtIPAddr">
  <input value="zhupan" name="txtDNSName">
  </form>
</body>
</html>



------解决方案--------------------
错了不好意思
------解决方案--------------------
死了心吧, 楼主百度谷歌了半天,就是为了搞懂php和js在哪里跑。
------解决方案--------------------
探讨

引用:
死心吧这个


就没有方法实现这个功能了吗?没有可能的话,我就结贴了,想别的办法去~

------解决方案--------------------
php只运行在服务器端。是无法获取客户端的东西的