1.导入第三方类库:

  1. <?php
  2. /**
  3. * FILE_NAME : Macaddr.php
  4. * linux平台获取服务器mac地址
  5. * @filesource
  6. */
  7. class Macaddr {
  8.  
  9. private static $return_array = array(); //返回带有MAC地址的字串数组
  10. private static $mac_addr; //MAC 地址
  11.  
  12. public function __construct() {
  13. echo 1;
  14. }
  15.  
  16. /**
  17. * 获取当前机器的MAC地址
  18. */
  19. public static function getMac() {
  20. $os_type = PHP_OS;
  21. switch ( strtolower($os_type) ) {
  22. case "linux":
  23. self::forLinux();
  24. break;
  25. case "solaris":
  26. break;
  27. case "unix":
  28. break;
  29. case "aix":
  30. break;
  31. default:
  32. self::forWindows();
  33. break;
  34. }
  35.  
  36. $temp_array = array();
  37. foreach (self::$return_array as $row) {
  38. foreach ($row as $value) {
  39. 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) ) {
  40. self::$mac_addr = $temp_array[0];
  41. break;
  42. }
  43. }
  44. if (!empty(self::$mac_addr)) {
  45. break;
  46. }
  47. }
  48. unset($temp_array);
  49.  
  50. return self::$mac_addr;
  51. }
  52.  
  53. private static function forWindows(){
  54. @exec("ipconfig /all", $macInfo);
  55. if ( $macInfo ) {
  56. self::$return_array[] = $macInfo;
  57. } else {
  58. $ipconfig = $_SERVER["WINDIR"]."\system32\ipconfig.exe";
  59. if ( is_file($ipconfig) ) {
  60. @exec($ipconfig." /all", $macInfo);
  61. }else {
  62. @exec($_SERVER["WINDIR"]."\system\ipconfig.exe /all", $macInfo);
  63. }
  64.  
  65. self::$return_array[] = $macInfo;
  66. }
  67. return self::$return_array;
  68. }
  69.  
  70. private static function forLinux(){
  71. @exec("/sbin/ifconfig", $macInfo);
  72. if ( $macInfo ) {
  73. self::$return_array[] = $macInfo;
  74. } else {
  75. $file_arr = array('ifcfg-eth0', 'ifcfg-eth1', 'ifcfg-eth2', 'ifcfg-eth3', 'ifcfg-em1', 'ifcfg-em2', 'ifcfg-em3', 'ifcfg-em4');
  76. foreach ($file_arr as $file) {
  77. if (file_exists('/etc/sysconfig/network-scripts/'.$file)) {
  78. self::$return_array[] = file('/etc/sysconfig/network-scripts/'.$file);
  79. }
  80. }
  81. }
  82.  
  83. return self::$return_array;
  84. }
  85. }
  86.  
  87. /* End of file config.php */
  88. /* Location: ./system/application/config/config.php */
  89. ?>

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. tomcat重启应用和tomcat重启是两回事。热部署就是重启应用

    tomcat重启应用和tomcat重启是两回事.热部署就是重启应用 tomcat重启应用和tomcat重启是两回事.热部署就是重启应用 tomcat可以设置检测到新的class后重启该应用(不是重启t ...

  2. mysql查询一个库中有多少张表

    SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES  WHERE table_schema = 'palm_2_0_ ...

  3. 利用【深度网络】高效提取feature

    extracting features from a learned model, and add some new features yourself.

  4. BAT文件使程序具有以系统权限运行的效果

    @echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.sh ...

  5. yarn Fairscheduler与Capacityscheduler

    Capacityscheduler Capacityscheduler允许多个组织共享整个集群,每个组织可以获得集群的一部分计算能力.通过为每个组织分配专门的队列,然后再为每个队列分配一定的集群资源, ...

  6. window命令

    查看端口占用命令: 开始--运行--cmd 进入命令提示符 输入netstat -aon 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在 ...

  7. Spring声明式事务的配置方式

    1.事务的特性   原子性:事务中的操作是不可分割的一部分   一致性:要么同时成功,要么同时失败(事务执行前后数据保持一致)   隔离性:并发互不干扰     持久性:事务一旦被提交,它就是一条持久 ...

  8. Exposing the Outlook Password Secrets

    Exposing the Outlook Password Secrets - www.SecurityXploded.comhttp://securityxploded.com/outlookpas ...

  9. python 类特殊成员

    class Foo: def __init__(self,age): self.age=age print('init') def __call__(self): print('call') def ...

  10. 微信小程序 - 一种简写方式

    // 第一种 isOrder: function() { //code }, // 第二种 isOrders() { //code },