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 相关文章推荐
推荐文章系统(一)
Oct 09 PHP
php实现从ftp服务器上下载文件树到本地电脑的程序
Feb 10 PHP
php cURL和Rolling cURL并发方式比较
Oct 30 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
Aug 25 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
Mar 03 PHP
你应该知道PHP浮点数知识
May 13 PHP
PHP实现搜索相似图片
Sep 22 PHP
PHP7+Nginx的配置与安装教程详解
May 10 PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 PHP
实例讲解PHP表单验证功能
Feb 15 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 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类的扩展和继承用法实例
2015/06/20 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
JS创建自定义表格具体实现
2014/02/11 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
JavaScript数组去重的3种方法和代码实例
2015/07/01 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
Babel 入门教程学习笔记
2018/06/13 Javascript
JavaScript中filter的用法实例分析
2019/02/27 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
JS实现分页导航效果
2020/02/19 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
Python利用itchat对微信中好友数据实现简单分析的方法
2017/11/21 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
python中threading开启关闭线程操作
2020/05/02 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
一个C/C++编程面试题
2013/11/10 面试题
校长就职演讲稿
2014/01/06 职场文书
服装创业计划书范文
2014/02/05 职场文书
2014年国庆标语
2014/06/30 职场文书
学雷锋志愿者活动方案
2014/08/21 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
工作收入证明模板
2015/06/12 职场文书
爱国主义电影观后感
2015/06/18 职场文书
爱国主义教育主题班会
2015/08/13 职场文书
2016国培研修心得体会
2016/01/08 职场文书
人生一定要学会的三样东西:放下、忘记、珍惜
2019/08/21 职场文书
MySQL 使用索引扫描进行排序
2021/06/20 MySQL
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android