PHP判断密码强度的方法详解


Posted in PHP onMay 26, 2017

本文实例讲述了PHP判断密码强度的方法。分享给大家供大家参考,具体如下:

一、php页面

$score = 0;
if(!empty($_GET['value'])){ //接收的值
    $str = $_GET['value'];
} else{
    $str = '';
}
if(preg_match("/[0-9]+/",$str))
{
    $score ++;
}
if(preg_match("/[0-9]{3,}/",$str))
{
    $score ++;
}
if(preg_match("/[a-z]+/",$str))
{
    $score ++;
}
if(preg_match("/[a-z]{3,}/",$str))
{
    $score ++;
}
if(preg_match("/[A-Z]+/",$str))
{
    $score ++;
}
if(preg_match("/[A-Z]{3,}/",$str))
{
    $score ++;
}
if(preg_match("/[_|\-|+|=|*|!|@|#|$|%|^|&|(|)]+/",$str))
{
    $score += 2;
}
if(preg_match("/[_|\-|+|=|*|!|@|#|$|%|^|&|(|)]{3,}/",$str))
{
    $score ++ ;
}
if(strlen($str) >= 10)
{
    $score ++;
}
echo $score;
exit;

二、html页面

<table cellspacing="0" cellpadding="0">
<tr>
<td>输入密码:</td>
<td colspan="4"><input type="password" value="" name="newpwd" onblur="getPassword();" />
</tr>
<tr>
<td>密码强度:</td>
<td id="idSM1" align="middle" width="20%"><span style="height:0px; line-height:0px;"> </span><span id="idSMT1" style="DISPLAY: none">弱</span></td>
<td id="idSM2" style="BORDER-LEFT: #fff 1px solid" align="middle" width="20%"><span style="height:0px; line-height:0px;"> </span><span id="idSMT0" style="DISPLAY:inline; FONT-WEIGHT: normal; COLOR: #666">无</span><span id="idSMT2" style="DISPLAY: none">中等</span></td>
<td id="idSM3" style="BORDER-LEFT: #fff 1px solid" align="middle" width="20%"><span style="height:0px; line-height:0px;"> </span><span id="idSMT3" style="DISPLAY: none">强</span></td>
<td id="idSM4" style="BORDER-LEFT: #fff 1px solid" align="middle" width="20%"> <span style="height:0px; line-height:0px;"> </span><span id="idSMT4" style="DISPLAY: none">极好</span></td>
</tr>
</table>

三、js

<script>
function getPassword(){
    var value = $("input[name='newpwd']").attr('value');
    $.get('index.php?r=account/testpwd',{value:value},function(data){
        if(data>=1 && data<=3){
            $('#idSM1').attr('class','pwdChkCon1'); //弱
            $('#idSM2').attr('class','pwdChkCon0');
            $('#idSM3').attr('class','pwdChkCon0');
            $('#idSM4').attr('class','pwdChkCon0');
            $('#idSMT1').show();
            $('#idSMT0').hide();
            $('#idSMT2').hide();
            $('#idSMT3').hide();
            $('#idSMT4').hide();
        } else if(data>=4 && data<=6){ //中等
            $('#idSM1').attr('class','pwdChkCon2');
            $('#idSM2').attr('class','pwdChkCon2');
            $('#idSM3').attr('class','pwdChkCon0');
            $('#idSM4').attr('class','pwdChkCon0');
            $('#idSMT0').hide();
            $('#idSMT1').hide();
            $('#idSMT2').show();
            $('#idSMT3').hide();
            $('#idSMT4').hide();
        } else if(data>=7 && data<=8){ //强
            $('#idSM1').attr('class','pwdChkCon3');
            $('#idSM2').attr('class','pwdChkCon3');
            $('#idSM3').attr('class','pwdChkCon3');
            $('#idSM4').attr('class','pwdChkCon0');
            $('#idSMT0').hide();
            $('#idSMT1').hide();
            $('#idSMT2').hide();
            $('#idSMT3').show();
            $('#idSMT4').hide();
        } else if(data>=9 && data<=10){ //极好
            $('#idSM1').attr('class','pwdChkCon4');
            $('#idSM2').attr('class','pwdChkCon4');
            $('#idSM3').attr('class','pwdChkCon4');
            $('#idSM4').attr('class','pwdChkCon4');
            $('#idSMT0').hide();
            $('#idSMT1').hide();
            $('#idSMT2').hide();
            $('#idSMT3').hide();
            $('#idSMT4').show();
        }
    });
}

四、css

<style>
.pwdChkCon0 {BORDER-RIGHT: #bebebe 1px solid;BORDER-BOTTOM: #bebebe 1px solid;BACKGROUND-COLOR: #ebebeb;TEXT-ALIGN: center;}
.pwdChkCon1 {BORDER-RIGHT: #bb2b2b 1px solid;BORDER-BOTTOM: #bb2b2b 1px solid;BACKGROUND-COLOR: #ff4545;TEXT-ALIGN: center;}
.pwdChkCon2 {BORDER-RIGHT: #e9ae10 1px solid;BORDER-BOTTOM: #e9ae10 1px solid;BACKGROUND-COLOR: #ffd35e;TEXT-ALIGN: center;}
.pwdChkCon3 {BORDER-RIGHT: #267a12 1px solid;BORDER-BOTTOM: #267a12 1px solid;BACKGROUND-COLOR: #3abb1c;TEXT-ALIGN: center;}
.pwdChkCon4 {BORDER-RIGHT: #267a12 1px solid;BORDER-BOTTOM: #267a12 1px solid;BACKGROUND-COLOR: #3abb1c;TEXT-ALIGN: center;}
</style>
PHP 相关文章推荐
模板引擎Smarty深入浅出介绍
Dec 06 PHP
坏狼的PHP学习教程之第1天
Jun 15 PHP
学习使用curl采集curl使用方法
Jan 11 PHP
PHP的curl实现get,post和cookie(实例介绍)
Jun 17 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
Aug 07 PHP
ThinkPHP之N方法实例详解
Jun 20 PHP
php计算指定目录下文件占用空间的方法
Mar 13 PHP
学习PHP Cookie处理函数
Aug 09 PHP
php 中的closure用法详解
Jun 12 PHP
PHP PDOStatement::columnCount讲解
Jan 30 PHP
PHP 代码简洁之道(小结)
Oct 16 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 PHP
thinkphp实现附件上传功能
May 26 #PHP
微信第三方登录(原生)demo【必看篇】
May 26 #PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
May 26 #PHP
老生常谈PHP面向对象之注册表模式
May 26 #PHP
老生常谈PHP数组函数array_merge(必看篇)
May 25 #PHP
Yii框架实现多数据库配置和操作的方法
May 25 #PHP
Yii框架扩展CGridView增加导出CSV功能的方法
May 24 #PHP
You might like
PHP取余函数介绍MOD(x,y)与x%y
2014/05/15 PHP
PHP捕获Fatal error错误的方法
2014/06/11 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
JavaScript prototype属性深入介绍
2012/11/27 Javascript
浅析AngularJS中的生命周期和延迟处理
2015/06/18 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
JS控制按钮10秒钟后可用的方法
2015/12/22 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
[02:00]DAC2018主宣传片——龙征四海,剑问东方
2018/03/20 DOTA
Python写的PHPMyAdmin暴力破解工具代码
2014/08/06 Python
Python中的True,False条件判断实例分析
2015/01/12 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
基于python判断字符串括号是否闭合{}[]()
2020/09/21 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
2021/02/25 Python
计算机操作自荐信
2013/12/07 职场文书
2014学雷锋活动心得体会
2014/03/10 职场文书
晨会主持词
2014/03/17 职场文书
热爱祖国演讲稿
2014/05/04 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
如何用python清洗文件中的数据
2021/06/18 Python
Pandas自定义选项option设置
2021/07/25 Python
Docker安装MySql8并远程访问的实现
2022/07/07 Servers