以文本方式查看主题 - 搭建论坛 (http://bbs.diylsoft.com:8118/starforum/index.asp) -- 用户服务 (http://bbs.diylsoft.com:8118/starforum/list.asp?boardid=2) ---- 请问:者能否获取客户端MAC地址? (http://bbs.diylsoft.com:8118/starforum/dispbbs.asp?boardid=2&id=29026) |
-- 作者:pc_doctor -- 发布时间:2009-11-9 20:18:01 -- 请问:者能否获取客户端MAC地址? WEB应用时,服务器端需要对客户端的MAC地址进行记录、识别是必须的一项。 请问:目前的搭建者能否实现之? |
-- 作者:development -- 发布时间:2009-11-9 21:05:46 -- 并不简单,必须要用到"活动"件,可以参考下面的介绍:javascript获取客户端网卡MAC地址和IP地址和计算机名在做 B/S 结构的系统时,我们常常需要获取客户端的一些信息,如 IP 和 MAC ,以结合身份验证。 要获取服务器端的 MAC 很容易,但是要获取客户端的 MAC 的地址确要花费一翻心思,通常的做法是调用 Win32API 或直接调用 nbtstat 命令,这样做有很多问题,而另一种方法就是直接用客户端脚本,我们这里用 Javascript ,这样做的好处是不需要服务器端进行处理,有客户端自行获取,传递到服务器端,且速度和可靠性都比在服务器端获取好。 具体实现的html和javascript如下: <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> 其实最关键的还是用到两个ActiveX: <OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT> <OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT> 不过这两个ActiveX都是系统自带,不用去下载或注册。 |
-- 作者:pc_doctor -- 发布时间:2009-11-9 21:57:47 -- 谢谢development朋友的同感理解并即使回复和详解讲解。 但是,就是不知道你这个方法怎么才能融合和使用于搭建者之中?因为搭建者的参数接收有些独特,我等不易照此实施将客户端获取的数据传递与搭建者服务器保存,还望请development朋友抽时间做个者的实际运用实例出来大家学习。 谢谢为盼!! |
-- 作者:pc_doctor -- 发布时间:2009-11-11 12:55:04 -- 以下是引用coco在2009-11-11 9:57:55的发言:
使用“javascript”构件应该可以,关键是如何转换 。
这就是问题的关键所在,一般不通过搭建者本身构件获取的参数数据很难被搭建者接收。 当然,这个命题本身有其难度,不在乎用什么方法(比如javascript),只要能在搭建者环境中实现。就通过三方来获取MAC地址的方法很多,但是不知道怎么才能融合进搭建者被搭建者所利用。 请admin也抽空帮大家研究一下,尽管搭建者本身一时难以实现,毕竟这是一个需求必须,哪怕是变通实现的。搞个实例出来大家也好举一反三的学习。 |
-- 作者:development -- 发布时间:2009-11-11 13:43:48 -- 这个吗,我来研究一下看看! |
-- 作者:a377163 -- 发布时间:2009-12-1 21:12:44 -- 以下是引用pc_doctor在2009-11-11 12:55:04的发言: 支持~~~~~最好是搞个实例~~我刚接触搭建者,退而求其次,请问目前能否实现获取客户端的ip地址?
这就是问题的关键所在,一般不通过搭建者本身构件获取的参数数据很难被搭建者接收。 当然,这个命题本身有其难度,不在乎用什么方法(比如javascript),只要能在搭建者环境中实现。就通过三方来获取MAC地址的方法很多,但是不知道怎么才能融合进搭建者被搭建者所利用。 请admin也抽空帮大家研究一下,尽管搭建者本身一时难以实现,毕竟这是一个需求必须,哪怕是变通实现的。搞个实例出来大家也好举一反三的学习。 |
-- 作者:ming1973 -- 发布时间:2009-12-1 22:02:12 -- 这个是可以的,直接使用“客户端信息”构件就OK! |
-- 作者:pc_doctor -- 发布时间:2009-12-3 0:19:34 -- 以下是引用ming1973在2009-12-1 22:02:12的发言:
这个是可以的,直接使用“客户端信息”构件就OK! 不可能吧,兄弟,你亲自测试过吗? 根本没有发现“客户端信息”构件有这个功能。 |
-- 作者:a377163 -- 发布时间:2009-12-27 19:24:41 -- 以下是引用pc_doctor在2009-12-3 0:19:34的发言:
不可能吧,兄弟,你亲自测试过吗? 根本没有发现“客户端信息”构件有这个功能。
有这个构建 不过需要指定要获取的信息 我刚开始接触,不知道怎么指定 |
-- 作者:jsphp -- 发布时间:2009-12-28 0:54:17 -- 直接运行“得到IP地址”方法,就可以了; 不要奢望得到太多的东西,否则谁还敢上你的网站。 |