没办法,要为每台客户端电脑产生一个唯一序列号,php完成不了

解决方案 »

  1.   

    这个需求靠COOKIE不保险,除非你能保证你的用户永远不清除cookie。
    如果一定要使用web方式的话,需要通过网页给用户装个activeX控件。可以用activeX控件获取网卡MAC地址,这个是全球唯一的值。只要用户不换网卡,当用户在你那里注册时,通过activeX控件获取用户网卡MAC地址存入数据库。以后每次登陆你的网站时activeX控件再把MAC地址读出来,与数据库里面存的MAC地址比对。
      

  2.   

    必须用activeX,php和js都无法获取网卡MAC的
      

  3.   

    我在网上找到的可以在本地获取mac
    但是传到服务器动不能获取到<?php
    /**
            获取机器网卡的物理(MAC)地址 
            wwa  $Exp 
    **/
    class GetMacAddr
    {
            var $return_array = array(); // 返回带有MAC地址的字串数组
            var $mac_addr;
            
            function GetMacAddr($os_type)
            {
                    switch ( strtolower($os_type) )
                    {
                            case "linux":
                                    $this->forLinux();
                                    break;
                            case "solaris":
                                    break;
                            case "unix":
                                    break;
                            case "aix":
                                    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["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;
                    }
            }        function forLinux()
            {
                    @exec("ifconfig -a", $this->return_array);
                    return $this->return_array;
            }
    }
    ?>
    <?
    $mac = new GetMacAddr(PHP_OS);
    echo $mac->mac_addr;
    ?> 
      

  4.   

    Ip和Mac都是不可取的,现在中国用的ADSL Moderm(我就是),可以随便改的,你试一下在ADSL Modern搞个telnet连接,执行一些命令,马上就可以改MAC地址的,IP地址不用说了,是动态的至于楼主的解决方法:注册用户的时候,生成一个唯一字符串,生成多几次(保证唯一性),然后把这些字符串让用户名登录时,必须按照这个唯一字符串登录,这样就可以了啊
      

  5.   

    MAC地址在互联网上几乎没有用的,每个连接都是靠IP地址的
      

  6.   

    你可以把每台计算机的mac地址保存起来
    一个mac地址对应一个账号 应该是可以的吧
      

  7.   


    这个也不行我的电脑根本不让执行activeX
      

  8.   

    纯web做不到
    一定要有其它软件配合
      

  9.   

    为什么不能把IP固定?
    你这个系统还要用在广域网上吗?不然的话你这个功能不是没用了吗?
    如果是办公用的话,把IP固定了不是很容易实现吗。
      

  10.   

    lz, 你甭想了,仅通过服务器是无法做到这一点的。我当年也蒙想过。。哈哈哈获取mac 在局域网可以所到。而且mac也是可以更改的。如果你想唯一确定一个电脑,必须在宿主电脑上运行一个本地程序(activex实际上也是这样才能获得mac的。但我从来不装不相信站点和没有名气的小网站的active)
    如果你能让客户运行那样的一个本地程序,你可以做一个自己的算法,比如对bios信息叠加,等等,参考一下硬件方面的东西,应该可以唯一确定一台电脑(mac地址不可靠,但一般也比较可靠,谁没事天天改mac),然后让这个程序把信息发送到服务器。
      

  11.   

    MAC地址确实可以通过arp命令更改,但说实话,有几个人会去改自己的MAC?况且一般用户是不会使用arp命令吧?但COOKIE就不一样了,很多系统优化软件会帮用户清除COOKIE,IE里面也有这个选项。或者对方一格式化计算机COOKIE也会消失。楼主你找的那个获取MAC地址的类是获取服务器的MAC地址不是客户端MAC,php怎么可能获取客户端的MAC地址?根据TCP/IP协议来说这根本不可能的。在客户端弹出要求安装activeX的时候,IE是会给一个提示的。你只需要在网站上写明要求,用户不加载activeX就不让其注册。微软的update时不也需要你装个activeX吗?没有绝对的安全,我们只是尽量完善而已。按理说,MAC已经比较可靠了。这是认证客户端最可靠的东西了。有的人说按照CPU版本之类的做个加密串。其实牵扯进来的东西越多越不好,万一用户换了PC的哪个零件,你这个加密串就失效。一般人很少换网卡的吧?这种系统我也见别人做过,都是靠识别MAC来做的。
      

  12.   

    验证IP地址,验证MAC地址,再限制一下一个帐号只能一个登录,比较简单的方法
      

  13.   

    上面不是说了很多了吗,php好像获取不到mac地址啊用activex也不是很方便浏览器都阻止
      

  14.   

    基本上不太可能,
    js和php都无法获取客户端的mac地址,因为这是不允许的.
    除非你开发一个控件,让用户在第一次使用的时候安装,然后用js调用控件获取mac地址.
      

  15.   

    去获取cpu或硬盘序列号吧,
    mac地址很容易改的,不太可靠
      

  16.   

    用php能获取到客户端的cpu或硬盘序列号吗,怎么获取呢
      

  17.   

    根本没办法,除了搞个ActiveX的控件等那些附加组件,否则是没有权限的,如果可以获取,那就很可怕了
      

  18.   

    获取硬件信息 :主板的序列号+硬盘序列号+cpu序列号 将这三个绑定到账号。  绝对保证 是全球唯一的, 用户也更改不了。除非他换配件。 呵呵。
    不过要获取这些信息,用php貌似非常困难,因为php是在服务器端执行的,挺多获取到服务器的变量,要获取浏览器客户端的信息就比较困难了。 JavaScript的功能貌似也实现不了。      期待JavaScript下一个版本有这个牛逼的功能吧。
      

  19.   

    这是一般商业软件采用的,可以试试不过得用微软的activex控件,获得机器码然后唯一,只要硬盘不低格就可以用
      

  20.   

    感觉可以通过MAC地址;硬盘序列号……唯一的东西
      

  21.   

    MAC地址,不管可以改不用PHP的话,邦定硬件最好
      

  22.   

    放弃这种想法吧,我觉得意义不大。php本身无法获取一些机器唯一的识别码。