很多站长朋友们都不太清楚php取得mac地址,今天小编就来给大家整理php取得mac地址,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例 2、 php 获取客户端的MAC地址 3、 如何用PHP获取客户端的MAC地址 4、 php如何获取客户端唯一标识符IP?mac地址? 5、 php如何获取到客户端mac的地址? php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例本文所述php实例可以完成获取局域网所有用户的电脑IP和主机名、及mac地址的功能,对于php程序设计人员有一定的参考借鉴价值。完整代码如下:
<?php
$bIp
=
gethostbyname($_ENV['COMPUTERNAME']);
//获取本机的局域网IP
echo
"本机IP:",$bIp,"\n";
echo
"本机主机名:",gethostbyaddr($bIp),"\n\n\n";
//gethostbyaddr
函数可以根据局域网IP获取主机名
//默认网关IP
list($ipd1,$ipd2,$ipd3)
=
explode('.',$bIp);
$mask
=
$ipd1
.
"."
.
$ipd2
.
"."
.
$ipd3
;
exec('arp
-a',$aIp);
//获取局域网中的其他IP
foreach(
$aIp
as
$ipv)
{
if(strpos($ipv,'接口')
!==
false)
{//一下显示的IP是否是当前局域网中的
而不是其他的类型
可以在cmd下试一下命令
$bool
=
false;
preg_match('/(?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))/',$ipv,$arr);
if(strcmp($arr[0],$bIp)
==
0)
{
$bool
=
true;
}
}
else
{
if($bool)
{
$str
=
preg_replace('/\s+/',
'|',
$ipv);
$sArr
=
explode('|',$str);
if($sArr[1]
==
'Internet'
||
empty($sArr[1]))
{
continue;
}
//去除默认网关
if(strcmp($mask
.
".1",
$sArr[1])
==
0)
{
continue;
}
//去除同网关下255的IP
if(strcmp($mask
.
".255",
$sArr[1])
==
0)
{
continue;
}
//去除组播IP
list($cIp)
=
explode('.',
$sArr[1]);
if($cIp
>=
224
$cIp
<=
239)
{
continue;
}
echo
"IP地址:|",$sArr[1],"|\n";
echo
"MAC地址:",$sArr[2],"\n";
echo
"主机名:",gethostbyaddr($sArr[1]),"\n";
echo
"\n\n";
}
}
}
该程序是在cli模式下运行的,在浏览器上应该也可以
php获取局域网中的用户ip功能就完成了,主要用到的是php的exec函数
和window的arp
-a
命令
其中获取本机IP:gethostbyname($_ENV['COMPUTERNAME'])
有别于以往的写法,感兴趣的朋友可以继续深入研究一下。
获取主机名函数:gethostbyaddr(IPd)
这个函数功能也很强大。
php 获取客户端的MAC地址<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);
</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="#" method="post"><INPUT value="" name="txtMACAddr"> <INPUT value="" name="txtIPAddr">
<INPUT value="zhupan" name="txtDNSName">
<input type="submit" value="send"></FORM></BODY></HTML>
表单中发出的就是客户端mac地址
如何用PHP获取客户端的MAC地址可以参考下面代码:
<?PHP
@exec("arp -a",$array); //执行arp -a命令,结果放到数组$array中
foreach($array as $value){
//匹配结果放到数组$mac_array
if(strpos($value,$_SERVER["REMOTE_ADDR"]) preg_match("/(:?[0-9A-F]{2}[:-]){5}[0-9A-F]{2}/i",$value,$mac_array)){
$mac = $mac_array[0];
break;
}
}
echo $mac;
?>
php如何获取客户端唯一标识符IP?mac地址?<?php
class GetMacAddr{
var $return_array = array(); // 返回带有MAC地址的字串数组
var $mac_addr;
function GetMacAddr($os_type){
switch(strtolower($os_type)){
case "linux":$this->forLinux();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;
}
}
}
//---实例化类
$mac = new GetMacAddr(PHP_OS);
echo $mac->mac_addr;
echo "<br />";
echo md5($mac->mac_addr);
?>
以上代码是获取mac地址的代码,在网上抄的,但实测有效,括号,我x,我第一次知道原来php也可以执行命令行。。。
至于如何限制,应该是去截取mac的一部分经行if判断就可以了,你先尝试一下
php如何获取到客户端mac的地址?MAC地址是不可以的,浏览器就拦击了,那个只是局域网内使用的。也就是许多通过路由器的广域网用户,根本就不把MAC地址传给WEB服务器,PHP程序是不可能获得的。
你要限制用户,只有使用证书,登录账户等方法实现。
关于php取得mac地址的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php取得mac地址 php获取mac地址的详细内容...