php获取客户端MAC和IP地址 js代码嵌入失败

zxdxyz 2012-05-26 10:21:46
经过各种百度,各种搜索,得出的结论是,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>

...全文
953 点赞 收藏 11
写回复
11 条回复
cliffyanT 2014年10月15日
楼主找到解决办法了吗?????求解答啊!
回复 点赞
zxdxyz 2012年05月29日
[Quote=引用 7 楼 的回复:]
引用 6 楼 的回复:

引用 3 楼 的回复:
死心吧这个


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


立刻结帖.
写浏览器插件 写桌面CS程序
[/Quote]

好吧,看来是没有别的自然方法了,插件什么的就用不上了;js就算嵌入成功了作用也不大~

我分不多,菜鸟一只,第一次发帖交流,平均一下都给了~
回复 点赞
zxdxyz 2012年05月29日
[Quote=引用 8 楼 的回复:]
php只运行在服务器端。是无法获取客户端的东西的
[/Quote]
恩,这个我知道,php直接获取的方式我已经放弃了,现在是想用js的方式,我的前端页面也是后缀为.php的,理论上js嵌入前端是可以执行的,但我这边js嵌入也不成~
回复 点赞
tottyandbaty 2012年05月29日
php只运行在服务器端。是无法获取客户端的东西的
回复 点赞
黄袍披身 2012年05月29日
[Quote=引用 6 楼 的回复:]

引用 3 楼 的回复:
死心吧这个


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

立刻结帖.
写浏览器插件 写桌面CS程序
回复 点赞
zxdxyz 2012年05月29日
[Quote=引用 3 楼 的回复:]
死心吧这个
[/Quote]

就没有方法实现这个功能了吗?没有可能的话,我就结贴了,想别的办法去~
回复 点赞
zxdxyz 2012年05月29日
[Quote=引用 4 楼 的回复:]
死了心吧, 楼主百度谷歌了半天,就是为了搞懂php和js在哪里跑。
[/Quote]

js是能实现的,但存在我上面说的两个问题,那想获得客户端内网ip和mac地址是不可能了?求指点,求确认。。。
回复 点赞
qq120848369 2012年05月27日
死了心吧, 楼主百度谷歌了半天,就是为了搞懂php和js在哪里跑。
回复 点赞
黄袍披身 2012年05月27日
死心吧这个
回复 点赞
顾小林 2012年05月26日
错了不好意思
回复 点赞
顾小林 2012年05月26日
<?php


/**
获取网卡的MAC地址原码;目前支持WIN/LINUX系统
获取机器网卡的物理(MAC)地址
**/

class GetMacAddr{

var $return_array = array(); // 返回带有MAC地址的字串数组
var $mac_addr;

function GetMacAddr($os_type){
switch ( strtolower($os_type) ){
case "linux":
$this->forLinux();
break;
case "solaris":
break;
case "unix":
break;
case "aix":
break;
default:
$this->forWindows();
break;

}


$temp_array = array();
foreach ( $this->return_array as $value ){

if (
preg_match("/[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f]/i",$value,
$temp_array ) ){
$this->mac_addr = $temp_array[0];
break;
}

}
unset($temp_array);
return $this->mac_addr;
}


function forWindows(){
@exec("ipconfig /all", $this->return_array);
if ( $this->return_array )
return $this->return_array;
else{
$ipconfig = $_SERVER["WINDIR"]."\system32\ipconfig.exe";
if ( is_file($ipconfig) )
@exec($ipconfig." /all", $this->return_array);
else
@exec($_SERVER["WINDIR"]."\system\ipconfig.exe /all", $this->return_array);
return $this->return_array;
}
}



function forLinux(){
exec("/sbin/ifconfig", $this->return_array,$r);
//echo "1234567";
// print_r($this->return_array);
echo "<br/>";
return $this->return_array;
}

}
//方法使用
$mac = new GetMacAddr(PHP_OS);
echo $mac->mac_addr;

$macc=$mac->mac_addr; //MAC的传值
echo PHP_OS;
//echo "1111";
echo $macc;//传值后的显示





?>

回复 点赞
发动态
发帖子
基础编程
创建于2007-09-28

9734

社区成员

14.0w+

社区内容

从PHP安装配置,PHP入门,PHP基础到PHP应用
社区公告
暂无公告