获取PHP服务端的网卡MAC地址的方法
- 5733
- PHP
- 8
- super_dodo
- 2016/09/19
本意是想获得PHP客户端的用户的MAC的地址的,网上查找了一些资料,该篇幅先讲如何获得服务器端的MAC地址的方法和类。Windows下面比较容易,但是Linux下面因为权限的因素,可能坑多一些,希望各自尝试,或者给我提供好的方法和建议。直接上类文件和代码:
<?php
/**
获取网卡的MAC地址原码:目前支持WIN/LINUX系统
获取机器网卡的物理(MAC)地址
**/
class MacAddr{
public $return_array = array(); // 返回带有MAC地址的字串数组
public $mac_addr;
/**
** 得到网卡的MAC地址
*/
public function getMacAddr($os_type){
switch (strtolower($os_type)){ //根据系统的类型
case "linux": $this->forLinux(); break;
case "unix": break;
default: $this->forWindows(); break; //WINNT
}
$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; //返回网卡地址
}
//对于windows系统
public 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;
}
}
}
//对于Linux系统
public function forLinux(){
@exec("ifconfig -a", $return_array); //得到网卡的信息
// echo '<pre>';
// print_r($return_array);
return $return_array;
}
}
//方法使用示例
$mac = new MacAddr();
$mac_addr = $mac->getMacAddr(PHP_OS);
echo $mac_addr; //这就是服务端的Mac地址: B8-88-E3-35-8E-D3
//另外科普一下PHP_OS这个函数
echo PHP_OS; //WINNT Linux
?>
求各位大神各抒己见,我想获取客户端的唯一标识,Mac地址或者其他。
Ps:PHP获取的IP,不太可靠,因为用户把网断开,重新拨号,如果是动态分配IP(大多数)的话IP就变了,静态IP的话,可以获取到。
因为陌生所以勇敢~
相关阅读
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
热门文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
最新文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例

