这篇文章主要介绍了如何在php与js中分别获取客户度mac地址的方法
需要的朋友可以参考下
废话不多讲直接上代码吧!
复制代码 代码如下:
<?php
class MacAddr
{
public $returnArray = array();
public $macAddr;
function __contruct($os_type=null){
if(is_null($os_type)) $os_type = PHP_OS;
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
>returnArray as $value ){
if(preg_match("/[
a
f][
a
f][:
]"
"[
a
f][
a
f][:
]"
"[
a
f][
a
f][:
]"
"[
a
f][
a
f][:
]"
"[
a
f][
a
f][:
]"
"[
a
f][
a
f]/i"
$value
$temp_array)){
$this
>macAddr = $temp_array[
];
break;
}
}
unset($temp_array);
return $this
>macAddr;
}
function forWindows(){
@exec("ipconfig /all"
$this
>returnArray);
if($this
>returnArray)
return $this
>returnArray;
else{
$ipconfig = $_SERVER["WINDIR"]
"system
ipconfig
exe";
if (is_file($ipconfig))
@exec($ipconfig
" /all"
$this
>returnArray);
else
@exec($_SERVER["WINDIR"]
"systemipconfig
exe /all"
$this
>returnArray);
return $this
>returnArray;
}
}
function forLinux(){
@exec("ifconfig
a"
$this
>returnArray);
return $this
>returnArray;
}
}
$mac = new MacAddr(PHP_OS);
echo $mac
>macAddr;
echo "<br />";
// 获取客户端
// linux
$command = "arp
a {$_SERVER[
REMOTE_ADDR
]}";
echo $command;
echo "<br />";
$result=`{$command}`;
// windows
$command = "nbtstat
a {$_SERVER[
REMOTE_ADDR
]}";
echo $command;
echo "<br />";
$result=`{$command}`;
print_r($result);
?>
获取服务端的逻辑没什么大问题可能会存在权限问题
获取客户端的时候可能会比较慢arp/nbstat命令执行会比较慢
复制代码 代码如下:
<script language="JScript" event="OnCompleted(hResult
pErrorObject
pAsyncContext)" for="foo">
document
forms[
]
lbMacAddr
value=unescape(MACAddr);
</script>
<script language="JScript" event="OnObjectReady(objObject
objAsyncContext)" for="foo">
if(objObject
IPEnabled != null && objObject
IPEnabled != "undefined" && objObject
IPEnabled == true && objObject
MACAddress != null && objObject
MACAddress != "undefined") MACAddr = objObject
MACAddress;
</script>
<object id="locator" classid="CLSID:
A
CB
D
B
D
B
"></object>
<object id="foo" classid="CLSID:
C
A
F
d
A
AC
C
FB
C
"></object>
<script language="JScript">
var service = locator
ConnectServer();
var MACAddr ;
var IPAddr ;
var DomainAddr;
var sDNSName;
service
Security_
ImpersonationLevel=
;
service
InstancesOfAsync(foo
Win
_NetworkAdapterConfiguration
);
</script>
<form><input type="text" id=
lbMacAddr
name=
lbMacAddr
/></form>
只适用于IE浏览器而且会有告警提示挺遗憾的