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. intel 硬盘加速技术

    Intel Smart Response Technology 混合硬盘技术 Intel Rapid Storage Technology SERVER:

  2. NPOI 生成Excel (单元格合并、设置单元格样式:字段,颜色、设置单元格为下拉框并限制输入值、设置单元格只能输入数字等)

    NPIO源码地址:https://github.com/tonyqus/npoi NPIO使用参考:源码中的 NPOITest项目 下面代码包括: 1.包含多个Sheet的Excel 2.单元格合并 ...

  3. JAVA常见算法题(六)

    package com.xiaowu.demo; /** * 输入两个正整数m和n,求其最大公约数和最小公倍数. * * @author WQ * */ public class Demo6 { pu ...

  4. 代理Delegation

    package com.ctl.test; class Person { private int id; private String name; public int getId() { retur ...

  5. python开发微信支付学习记录(转)

    前言 微信支付是由微信及财付通联合推出的移动支付创新产品.如今,随着微信支付的全面开放,相关需求也越来越多,很多开发人员进行微信支付开发及商家申请微信支付时,面临着诸多疑惑. 要想开发顺利进行,首先要 ...

  6. Preference Learning——Object Ranking

    Basics About Orders Object Ranking应用: 量化的受訪者的感觉或印象(quantification of respondents' sensations or impr ...

  7. yarn 查看任务信息

    一.在命令行使用命令查看 (1)查看日志:yarn logs -applicationId application_1469094096026_26612 (2)查看状态:yarn applicait ...

  8. JPEG编码(一)

    JPEG编码介绍. 转自:http://blog.chinaunix.net/uid-20451980-id-1945156.html JPEG(Joint Photographic Experts ...

  9. 持久化配置管理 diamond 使用简介

    本次为大家介绍diamond的概况和快速使用. 一.概况 diamond是淘宝内部使用的一个管理持久配置的系统,它的特点是简单.可靠.易用,目前淘宝内部绝大多数系统的配置,由diamond来进行统一管 ...

  10. Node.js 网页瘸腿爬虫初体验

    延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了. // 内置http模块,提供了http服务器 ...