网站首页技术探讨

PHP检验用户所输入密码的强度

发布时间:2017-07-14编辑:Zetan阅读:(1615)喜欢:(0)

    这是一个基于PHP所写的验证用户在注册时,所输入的密码的强度,并给出对应的提示语。此类十分简单,但是效果不错,需要的朋友可以复制下来使用,也可以在此类基础上做一些修改,实现更加完善的检验类。

    下面废话就不多说了,直接看代码吧:


    <?php
    /**
     * Created by PhpStorm.
     * User: Athena丶纵容
     * Date: 2017/7/14
     * Time: 13:57
     */
    class password{

        /**
         * 统计所有积分并计算对应强度
         * @param $password
         * @return string
         */
        public function IsPasswordLevel($password)
        {
            $LengthLevel=$this->PwdLength($password);
            $LetterLevel=$this->PwdLetter($password);
            $SymbolLevel=$this->PwdSymbol($password);
            $level=$LengthLevel+$LetterLevel+$SymbolLevel;
            switch($level){
                case 0;
                    $meg='非常弱';
                    break;
                case 30;
                    $meg='弱';
                    break;
                case 40;
                    $meg='较弱';
                    break;
                case 50;
                    $meg='一般';
                    break;
                case 60;
                    $meg='较强';
                    break;
                case 70;
                    $meg='强';
                    break;
                case 80;
                    $meg='安全';
                    break;
                case 90;
                    $meg='较安全';
                    break;
                case 100;
                    $meg='非常安全';
                    break;
                default:
                    $meg='非常安全';
            }
            return $meg;
        }

        /**
         * 判断密码长度
         * @param $password
         * @return int
         */
        protected static function PwdLength($password){
            $length=strlen($password);
            if($length<=4){
                $pwdLevel = 10;
            }elseif($length<=8){
                $pwdLevel = 20;
            }else{
                $pwdLevel = 30;
            }
            return $pwdLevel;
        }

        /**
         * 判断密码中的字符类型
         * @param $password
         * @return int
         */
        protected static function PwdLetter($password){
            $pwdLevel=0;
           // $a=preg_match('/['.chr(0xa1).'-'.chr(0xff).']/', $password);   //汉字
            $b=preg_match('/[0-9]/', $password);       //数字
            $c=preg_match('/[a-z]/', $password);   //小写英文
            $d=preg_match('/[A-Z]/', $password);   //大写英文
            $f=preg_match('/[a-zA-Z]/', $password); //大小写英文
            if($b && !$c && !$d)
                $pwdLevel = 10;
            elseif(!$b && $c && !$d)
                $pwdLevel=20;
            elseif(!$b && !$c && $d)
                $pwdLevel=30;
            elseif(!$b && $f)
                $pwdLevel=40;
            elseif($b && $f)
                $pwdLevel=50;
            return $pwdLevel;
        }

        /**
         * 判断密码中是否有特殊字符
         * @param $password
         * @return int
         */
        protected static function PwdSymbol($password){
            if(preg_match("/^[A-Za-z0-9]+$/",$password)){
                $pwdLevel=10;
            }else{
                $pwdLevel=20;
            }
            return $pwdLevel;
        }
    }