废话不多讲,直接上代码吧!
复制代码 代码如下:
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(/[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->macaddr = $temp_array[0];
break;
}
}
unset($temp_array);
return $this->macaddr;
}
function forwindows(){
@exec(ipconfig /all, $this->returnarray);
if($this->returnarray)
return $this->returnarray;
else{
$ipconfig = $_server[windir].system32ipconfig.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
;
// 获取客户端
// linux
$command = arp -a {$_server['remote_addr']};
echo $command;
echo
;
$result=`{$command}`;
// windows
$command = nbtstat -a {$_server['remote_addr']};
echo $command;
echo
;
$result=`{$command}`;
print_r($result);
?>
获取服务端的逻辑没什么大问题,虚拟主机,可能会存在权限问题。
获取客户端的时候,可能会比较慢,arp/nbstat命令执行会比较慢。
复制代码 代码如下:
只适用于ie浏览器,而且会有告警提示,香港服务器,挺遗憾的。
,免备案空间