色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

php使用正則驗(yàn)證密碼字段的復(fù)雜強(qiáng)度原理詳細(xì)講解 原創(chuàng)

瀏覽:166日期:2022-06-05 18:37:30
目錄
  • 一. php密碼復(fù)雜示例
  • 二. 高級(jí)版簡(jiǎn)單寫(xiě)法
  • 三. 總結(jié)

密碼涉及到安全問(wèn)題,簡(jiǎn)單的密碼很容易被暴力破解,所以密碼設(shè)計(jì)的復(fù)雜程序尤為重要。通常情況下密碼由大小寫(xiě)字母、數(shù)字、特殊符號(hào)組成。比如前端需要用戶(hù)設(shè)置密碼時(shí),可以使用javascript進(jìn)行正則判斷,密碼不符合要求時(shí)彈窗或輸出提示,那就不要使用php等后端語(yǔ)言了?不使用后端語(yǔ)言是不安全的,因?yàn)槠渌丝梢灾苯邮褂胮ostman等自定義參數(shù)提交你的URL接口。一般情況下前端可不做js判斷,使用ajax提交php后端程序接口,由后端判斷后返回json數(shù)據(jù),進(jìn)行用戶(hù)密碼復(fù)雜程序提示。

一. php密碼復(fù)雜示例

<?php
function check_password($password) {
    $pattern1="/[A-Z]/";
    $pattern2="/[a-z]/";
    $pattern3="/[0-9]/";
    $pattern4="/[_.\-#$%]/";

    if(strlen($password)<6) {
echo "密碼需要至少包含6個(gè)字符";   
exit;
    }
    if(!preg_match($pattern1,$password)) {
echo "密碼需要至少一個(gè)大寫(xiě)字母";
exit;
    }
    if(!preg_match($pattern2,$password)) {
echo "密碼需要至少一個(gè)小寫(xiě)字母";
exit;
    }
    if(!preg_match($pattern3,$password)) {
echo "密碼需要至少一個(gè)數(shù)字";
exit;
    }
    if(!preg_match($pattern4,$password)) {
echo "密碼需要至少一個(gè)特殊符號(hào):_.-#$%";
exit;
    }
    echo "密碼符合要求";
}
echo check_password("jb51.net");

輸出結(jié)果:

密碼需要至少一個(gè)大寫(xiě)字母

示例代碼由淺入深詳細(xì)講解:

1. echo check_password('jb51.net');  echo—php字符串打印輸出,運(yùn)行check_password()方法,字符串參數(shù)—jb51.net;

2. $pattern1='/[A-Z]/'; 變量$pattern1賦值,后面的正則表達(dá)式規(guī)則:A-Z是指26個(gè)大寫(xiě)英文字母,放在[]中的指其中一個(gè),兩邊的兩個(gè)斜杠"/"表示正則表達(dá)式的定界符;

3. $pattern2='/[a-z]/'; a-z是指26個(gè)小寫(xiě)英文字母;

4. $pattern3='/[0-9]/'; 0-9是指0到9共10個(gè)數(shù)字;

5. $pattern4='/[_.\-#$%]/'; _.\-#$%是指字符_.-#$%,細(xì)心的朋友發(fā)現(xiàn)了嗎,中間有個(gè)反斜杠\,這個(gè)是特殊字符的轉(zhuǎn)義。通常正則表達(dá)式中匹配特殊字符"\"、"?"、"*"、"^"、"$"、"+"、"("、")"、"|"、"{"、"[",都需要用反斜杠("\")進(jìn)行轉(zhuǎn)義;

6. 字符串'jb51.net'大于6個(gè)字符,strlen() 函數(shù)返回字符串的長(zhǎng)度,不報(bào)錯(cuò);

7. preg_match('正則表達(dá)式','需要匹配的字符串') 函數(shù)用于執(zhí)行一個(gè)正則表達(dá)式匹配,preg_match還有其他的參數(shù),有需要查看相關(guān)說(shuō)明,preg_match的值將是 0 次(不匹配)或 1 次;

8. 從上往下運(yùn)行到preg_match($pattern1,$password)時(shí),preg_match匹配到'jb51.net'沒(méi)有大寫(xiě)字母,值為0,加上'!'后值為真,輸出"密碼需要至少一個(gè)大寫(xiě)字母!",'exit'退出腳本執(zhí)行。

二. 高級(jí)版簡(jiǎn)單寫(xiě)法

上面的示例朋友們可能發(fā)現(xiàn)有4個(gè)規(guī)則,進(jìn)行了5次判斷,考慮到運(yùn)行效率和代碼簡(jiǎn)潔,高級(jí)版簡(jiǎn)單寫(xiě)法如下:

<?php
function check_password($password) {
    $pattern5="/^(?![a-zA-Z_.\-#$%]+$)(?![a-zA-Z0-9]+$)(?![\d_.\-#$%]+$)(?![a-z\d_.\-#$%]+$)(?![A-Z\d_.\-#$%]+$)[\w.\-#$%]{6,30}$/";
    if(!preg_match($pattern5,$password)) {
echo "密碼不符合要求!";
exit;
    }
    echo "密碼符合要求";
}
echo check_password("jb51.net");

輸出結(jié)果:

密碼不符合要求!

示例代碼由淺入深詳細(xì)講解:

正則表達(dá)式講解,\w匹配一個(gè)英文字母、數(shù)字或下劃線(xiàn);\w等價(jià)于[0-9a-zA-Z_];\d匹配一個(gè)數(shù)字;等價(jià)于[0-9];.\-#$%見(jiàn)上面講解;{6,30}對(duì)前面數(shù)量控制,表示是6到30個(gè);?![a-zA-Z_.\-#$%]+$指不包含字符串'a-zA-Z_.\-#$%'。

三. 總結(jié)

本文講解php使用正則驗(yàn)證密碼字段的復(fù)雜度,由淺入深簡(jiǎn)單易懂,看懂的朋友可以舉一反三。比如使用preg_match("/^[0-9]+$/", $password)) 驗(yàn)證全是數(shù)字,注意前面沒(méi)有'!'。比如使用return json_encode(['code' => 0, 'msg' => '提示']);返回給前端json格式數(shù)據(jù),供前端ajax回調(diào)處理。

到此這篇關(guān)于php使用正則驗(yàn)證密碼字段的復(fù)雜度的文章就介紹到這了,更多相關(guān)php正則驗(yàn)證密碼強(qiáng)度內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章。希望大家以后多多支持!

標(biāo)簽: PHP
主站蜘蛛池模板: 精品视频一区二区三区四区 | 国产成人精品无缓存在线播放 | 一级毛片免费看 | 亚洲成a人片在线观看精品 亚洲成a人片在线观看中 | 欧美一区二区三区不卡免费观看 | 模特精品一区二区三区 | 亚洲a在线播放 | 亚州三级 | 女bbbbxxxx毛片视频0 | 国产免费一级片 | 日韩一级欧美一级毛片在 | 手机国产日韩高清免费看片 | 在线观看不卡一区 | 国产一级高清 | www.久久久| 香蕉久久夜色精品国产 | 精品九九久久国内精品 | 国产成人精品久久二区二区 | 日韩视频在线观看一区二区 | 97精品国产福利一区二区三区 | 国产91精品一区二区麻豆亚洲 | 91丨九色丨首页在线观看 | 曰本黄页 | u影一族亚洲精品欧美激情 va欧美 | 亚洲一区中文 | 国产精品午夜国产小视频 | 99精品欧美一区二区三区 | 亚洲va老文色欧美黄大片人人 | 在线观看免费精品国产 | 一国产一级淫片a免费播放口 | 国产三级在线看 | 99久久99这里只有免费费精品 | 91成人免费 | 日韩美女一区 | 国产精品二区三区免费播放心 | 18videosex性欧美69 | 欧美三级超在线视频 | 一级女毛片 | 中文字幕在线视频精品 | 欧美va在线播放免费观看 | 亚洲欧美一区二区视频 |