




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第PHP生成隨機碼的思路與方法實例探索本文實例講述了PHP生成隨機碼的思路與方法。分享給大家供大家參考,具體如下:
背景
今天因為無聊,小伙伴讓寫一個生成5位隨機碼的函數(shù),要求:可包含數(shù)字、字母大小寫,代碼盡量短。
解題思路
(1).第一思路
都是印象中匹配ASCII碼進(jìn)行隨機讀取的實現(xiàn)方法,此處可提供一個方法作為參考:
functionget_rand_ascii($pw_length=5){
$randpwd='';
for($i=0;$i$pw_length;$i++){
$randpwd.=chr(mt_rand(33,99));
return$randpwd;
(2).第二思路
1.定義隨機數(shù)組,內(nèi)含能夠使用的所有字符
functiongetRandomString($length=5){
//可任意添加需要的字符
$chars=array(
"a","b","c","d","e","f","g","h","i","j","k",
"l","m","n","o","p","q","r","s","t","u","v",
"w","x","y","z","A","B","C","D","E","F","G",
"H","I","J","K","L","M","N","O","P","Q","R",
"S","T","U","V","W","X","Y","Z","0","1","2",
"3","4","5","6","7","8","9"
$charsLen=count($chars)-1;
shuffle($chars);//將數(shù)組打亂
$output="";
for($i=0;$i$length;$i++){
$output.=$chars[mt_rand(0,$charsLen)];
return$output;
提示:此類的代碼,建議去除可能引起歧義的字符,如:1、I、l、0、o、O、9、q.
缺點:5個字符沒有重復(fù)
2.比較上述1中的數(shù)組形式,設(shè)計字符串形式參考如下:
functionget_pass($length=8){
//密碼字符集,可任意添加你需要的字符
$chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^*()-_[]{}~`+=,.;:/
$password='';
for($i=0;$i$length;$i++){
//這里提供兩種字符獲取方式
//第一種是使用substr截取$chars中的任意一位字符;
//第二種是取字符數(shù)組$chars的任意元素
//$password.=substr($chars,mt_rand(0,strlen($chars)-1),1);
$password.=$chars[mt_rand(0,strlen($chars)-1)];
return$password;
(3).第三思路
發(fā)現(xiàn)的新思路,可使用加密算法進(jìn)行獲取
publicfunctiongetRand(){
$rand=rand(10000,100000);
$str=substr(base64_encode($rand),0,5);
return$str;
提示:md5()函數(shù)只有數(shù)字和小寫的字母
發(fā)現(xiàn):base64_encode()可以滿足要求
拓展延伸
針對于PHP設(shè)計,一般的隨機碼可用于驗證碼、分享碼的生成,著重注意位數(shù)的限制,必要情況下,保證該隨機碼的唯一性.
password_hash的使用(PHP5.5)
可用于用戶的密碼加密存儲,不過有一點需注意:如果數(shù)據(jù)庫遷移,對于java或.net語言將難以適用.
$password='password1232456';//前端獲取的原始密碼
//數(shù)據(jù)庫存放的使用BCRYPT算法加密的密碼
//此處僅為測試,實際應(yīng)用時應(yīng)從數(shù)據(jù)表中查詢獲得
//$db_pass='$2y$10$2vJJC.rb/swAUnTfc9B94.l/ix75kiZHvOZFpu0Dd8uzp07YWlj4q';
$db_pass=password_hash($password,PASSWORD_BCRYPT);
if(password_verify($password,$db_pass)){
echo"密碼匹配";
}else{
echo"密碼錯誤";
參考文章:
/article/71635.htm
PS:這里再為大家提供兩款功能類似的在線工具供大家參考:
在線隨機數(shù)字/字符串生成工具:
/aideddesign/suijishu
在線隨機字符/隨機密碼生成工具:
/aideddesign/rnd_password
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- (新版)焊工職業(yè)技能考試題庫及答案(含各題型)
- 內(nèi)蒙古興安盟科爾沁右翼前旗第二中學(xué)2024-2025學(xué)年高一下學(xué)期6月月考語文試題(含答案)
- 希望杯初三試題及答案
- 河南省南陽市內(nèi)鄉(xiāng)縣實驗高級中學(xué)2025屆高三下學(xué)期考前熱身練政治試卷(含答案)
- 2025年陜西省西安市高新第一中學(xué)中考數(shù)學(xué)七模試卷(含部分答案)
- 2025年福建省廈門中考英語二模卷
- 推動家電公司數(shù)字化轉(zhuǎn)型與智能化應(yīng)用
- 《2025年代理收付款項服務(wù)合同》
- Furegrelate-sodium-Standard-U-63557A-Standard-生命科學(xué)試劑-MCE
- Cephalosporin-C-生命科學(xué)試劑-MCE
- 成人教育監(jiān)考老師職責(zé)承諾書
- 統(tǒng)編版語文三年級上冊第四單元快樂讀書吧:在那奇妙的王國里 課件
- 數(shù)據(jù)結(jié)構(gòu)JAVA試題及答案
- 第二屆全國化工和醫(yī)藥行業(yè)安全生產(chǎn)線上知識競賽題庫(共150題)
- 數(shù)據(jù)采集與分析服務(wù)協(xié)議
- 2025年北京市朝陽區(qū)九年級初三二模道德與法治試卷(含答案)
- 第2章 第2節(jié) 五行學(xué)說課件
- 西安市統(tǒng)計局招聘基層“統(tǒng)計員”筆試真題2024
- 洗車店合伙合同協(xié)議書
- 國家開放大學(xué)國開電大《統(tǒng)計與數(shù)據(jù)分析基礎(chǔ)》形考任務(wù)1-4 參考答案
- 2025年高壓電工作業(yè)(復(fù)審)模擬考試題庫試卷及答案
評論
0/150
提交評論