PHP生成隨機碼的思路與方法實例探索_第1頁
PHP生成隨機碼的思路與方法實例探索_第2頁
PHP生成隨機碼的思路與方法實例探索_第3頁
PHP生成隨機碼的思路與方法實例探索_第4頁
PHP生成隨機碼的思路與方法實例探索_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論