1.导入第三方类库:

<?php
/**
* FILE_NAME : Macaddr.php
* linux平台获取服务器mac地址
* @filesource
*/
class Macaddr { private static $return_array = array(); //返回带有MAC地址的字串数组
private static $mac_addr; //MAC 地址 public function __construct() {
echo 1;
} /**
* 获取当前机器的MAC地址
*/
public static function getMac() {
$os_type = PHP_OS;
switch ( strtolower($os_type) ) {
case "linux":
self::forLinux();
break;
case "solaris":
break;
case "unix":
break;
case "aix":
break;
default:
self::forWindows();
break;
} $temp_array = array();
foreach (self::$return_array as $row) {
foreach ($row 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) ) {
self::$mac_addr = $temp_array[0];
break;
}
}
if (!empty(self::$mac_addr)) {
break;
}
}
unset($temp_array); return self::$mac_addr;
} private static function forWindows(){
@exec("ipconfig /all", $macInfo);
if ( $macInfo ) {
self::$return_array[] = $macInfo;
} else {
$ipconfig = $_SERVER["WINDIR"]."\system32\ipconfig.exe";
if ( is_file($ipconfig) ) {
@exec($ipconfig." /all", $macInfo);
}else {
@exec($_SERVER["WINDIR"]."\system\ipconfig.exe /all", $macInfo);
} self::$return_array[] = $macInfo;
}
return self::$return_array;
} private static function forLinux(){
@exec("/sbin/ifconfig", $macInfo);
if ( $macInfo ) {
self::$return_array[] = $macInfo;
} else {
$file_arr = array('ifcfg-eth0', 'ifcfg-eth1', 'ifcfg-eth2', 'ifcfg-eth3', 'ifcfg-em1', 'ifcfg-em2', 'ifcfg-em3', 'ifcfg-em4');
foreach ($file_arr as $file) {
if (file_exists('/etc/sysconfig/network-scripts/'.$file)) {
self::$return_array[] = file('/etc/sysconfig/network-scripts/'.$file);
}
}
} return self::$return_array;
}
} /* End of file config.php */
/* Location: ./system/application/config/config.php */
?>

2.CI中使用示例:

<?php

class A extends CI_Controller {
public function checkMac()
{
  $this->load->library('Macaddr');//导入类库
  $currentMac = Macaddr::getMac();
  $macList = array();//在配置文件中写死

  if( !empty($currentMac) && !in_array($currentMac, $macList) ) {
    exit();
  }

}

}

mac地址绑定的更多相关文章

  1. Mac地址绑定的wifi

    可以仿冒mac地址连接到wifi. 1.首先使用cdlinux扫描ssid,抓握手包--当捕获某个连接该wifi的client的时候,记下该client的mac地址. 2.用eswa解码抓包文件,获取 ...

  2. inux网卡与MAC地址绑定方法总结

        使用linux系统时会出现这样的情况,当你安装了某个网卡的驱动程序时,或者安装了与网卡相关的程序后. 网卡会出现所谓的漂移现象.(注意:不是飘逸).可能的表象为: (1):网卡顺序颠倒,比如之 ...

  3. 修改MAC地址的方法 破解MAC地址绑定(抄)

    修改MAC地址的方法 破解MAC地址绑定   网卡的MAC地址是固化在网上EPROM中的物理地址,是一块网卡的“身份证”,通常为48位.在平常的应用中,有很多方面与MAC地址相关,如有些软件是和MAC ...

  4. 纠结好久的VM虚拟机MAC地址绑定问题

    VM虚拟机(centos)采用桥接的方式访问网络,搭建一个Online Judger 的 web服务端.本想让虚拟机的ip能够固定下来,因此在路由上采用MAC和IP绑定的方式解决. 结果:每次重启虚拟 ...

  5. 交换机端口与Mac地址绑定(基于Cisco模拟器)

    实验设备: 二层交换机一台,主机三台 实验步骤: 1.进入相应的接口 (以端口1设置Mac地址绑定,PC0接1端口举例) Switch>enable Switch#config Configur ...

  6. IP地址和MAC地址绑定的必要性

    计算机网络是一个共通的网络,世界上任何计算机都可以互相访问. 实现的原理基于网络通讯的互联网交互五层模型. 计算机网络的历史发展 当计算机网络技术初始利用的时代,几台计算机通过集线器连接,就可以实现网 ...

  7. IP地址与Mac地址绑定错误

    有个application,有时候可以正常访问,有时候又返回404错误,百思不得其解.刚开始以为是文件夹权限问题,折腾了好久. 后来没在服务器上monitor到包,所以猜想是到了错误的mac地址,用a ...

  8. 018 cisco 3560 MAC地址绑定

    在3560交换机上show ip dhcp binding 可以看到通过DHCP服务广播出去的IP地址与MAC地址的对应表: 比如: Switch#show ip dhcp binding IP ad ...

  9. ARP防火墙绑定网关MAC地址预防ARP攻击和P2P终结者

    [故障原理]  要了解故障原理,我们先来了解一下ARP协议.  在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的.ARP协议对网络安全具有重要的意义.通过伪造IP地址和M ...

随机推荐

  1. 能上架App的GooglePlay开发者账号获取流程

    googleplay 开发者账号申请流程 接到公司号召,要让我们的app走向世界,上架GooglePlay,都说天朝的Android 程序员是折翼的天使,猛然发现写了做么多年的Android,竟然不知 ...

  2. JAVA常见算法题(十九)

    package com.xiaowu.demo; /** * * 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和. * * * @author WQ ...

  3. apache只记录指定URI的日志

    我的需求是,把类似请求 www.aaa.com/aaa/... 这样的请求才记录日志.在httpd.conf 或者 相关的虚拟主机配置文件中添加SetEnvIf Request_URI "^ ...

  4. Unix网络编程学习笔记之第12章 IPv4与IPv6的互操作性

    一. 简单介绍 如果我们本章讨论的主机都是支持双栈的,即支持IPv4地址.也支持Ipv6地址. 我们本次讨论的点:client与server端使用的是不同类型的地址.由于同样类型的地址没什么可讲的. ...

  5. android 小技巧

    1. 模拟器横坚屏切换 ctrl + F11, ctrl + F12

  6. mvn 更改打包的名称

    在pom.xml中加入以下代码 <build> <finalName>moon</finalName> <pluginManagement> <p ...

  7. 编译和安装在Windows上橡胶树 (Compiling and Installing Yate on Windows)

    编译和安装在Windows上橡胶树     有两种方法来安装橡胶树下窗口: 下载并安装橡胶树 下载后页面设置. 另一个选择是下载橡胶树从SVN并编译它. 内容 ( 隐藏] 1 安装使用设置橡胶树 2  ...

  8. Microsoft Sync Framework 2.1 可再发行程序包 Microsoft Sync Framework 1.0 SP1 - 中文(简体)

    Sync Framework 2.1 引入了新功能,这些功能支持您计算机上的 SQL Server 或 SQL Server Compact 数据库与 SQL Azure 数据库进行同步.此发行版还引 ...

  9. Android学习(六) 文本框边框

    BorderTextViews.java package xiaosi.BorderTextView; import android.content.Context; import android.g ...

  10. javascript 设计模式 -- 发布/订阅模式

    直接上代码: index.html : <!DOCTYPE html> <html lang="en"> <head> <meta cha ...