用php写的后台,接到的需求有一定的难度.他们要求某些帐号只能在公司登陆,最好只能在某部机子登陆.b/s
程序啊,哪能做到限制到某部机子登陆...?不过也没绝对,我想到了另外一些方法.
1.判断登陆时间,只能在平常时的正常上班时间才给登陆,这可以做到.
2.判断公司ip,这个页在在本地服务器上设成任务执行,或者我们技术这边手工执行就得,这个页面会自动更新公司的ip到服务器上,每次那些帐号登陆时就去判断一下ip,如果是公司ip就给登陆,否则拒绝登陆.~~囧,如若一天断几次网有点麻烦.
大家有什么想法?

解决方案 »

  1.   

    读取mac
    <?php   
      
    class GetMacAddress {   
        var $return_array = array();   
        var $mac_addr;   
      
        function _construct($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["SystemRoot"]."\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;   
            }   
        }   
      
        function forLinux() {   
            @exec("ifconfig  -a", $this->return_array);   
            return $this->return_array;   
        }   
    }   
      
    $mac = new GetMacAddress(null);   
    echo $mac->mac_addr;   
      
    ?>  
      

  2.   

    呵呵,刚才把问题弄复杂了。其实这样就可以了
    $hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
      

  3.   

    6楼的 那个读取MAC 程序 我运行了下 好像不行喔
      

  4.   

    内部网络的电脑 一般 都是用内部IP 吧?
    获取他的ip ,然后 判断一下是否 内部网络ip这个是获取ip的方法
    http://hi.baidu.com/xiaoxiaolq/blog/item/a40b8123ab41204eac34dee7.html
      

  5.   

    多谢楼上各位 ,读ip来限制不太好,因为读了如果是来自内网的ip,统计是外网的,这样自然做不到限制内网某部机子登陆..6,7楼的答案读mac不错,但7楼读计算机名称,这个人家可以改,改名比改mac地址简单点,一般的mm不太会操作,功能就达到了.~~选读mac地址好了,  ps :6楼的程序可以运行. 5楼的  读取网卡,限制网卡名称!  ~~~这个做不到吧.
      

  6.   

    PHP不能直接获取到client 的MAC 地址:
    或者试一下 用JS 来获取吧
    看看 这文章所说的:
    http://www.topbase.com.cn/hi/?p=738