PHP中快速生成隨機(jī)密碼的幾種方式
思路是這樣的,密碼通常是英文字母和數(shù)字的混合編排,我們可以借助隨機(jī)函數(shù)rand函數(shù)隨機(jī)的選擇一個(gè)長(zhǎng)字符串的一部分。
function random_code($length = 8,$chars = null){
if(empty($chars)){
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
}
$count = strlen($chars) - 1;
$code = '';
while( strlen($code) < $length){
$code .= substr($chars,rand(0,$count),1);
}
return $code;
}
echo random_code;//A1zYbN5X
我們使用rand函數(shù)的目的是為了產(chǎn)生隨機(jī)的字符串,但是如果有一個(gè)函數(shù)可以做到的話,我們就沒有必要使用rand函數(shù)了。
function random_char($length = 8,$chars = null){
if( empty($chars) ){
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
}
$chars = str_shuffle($chars);
$num = $length < strlen($chars) - 1 ? $length:str_len($chars) - 1;
return substr($chars,0,$num);
}
可以看到不使用rand函數(shù),而是使用str_shuffle函數(shù),好處是大大減少了代碼量。
更近一部的,我們的函數(shù)不僅可以生成隨機(jī)的密碼,還可以生成短信驗(yàn)證碼,以及高強(qiáng)度的服務(wù)器登錄密碼。
function random_code_type($length = 8,$type = 'alpha-number'){
$code_arr = array(
'alpha' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
'number'=> '0123456789',
'sign' => '#$%@*-_',
);
$type_arr = explode('-',$type);
foreach($type_arr as $t){
if( ! array_key_exists($t,$code_arr)){
trigger_error("Can not generate type ($t) code");
}
}
$chars = '';
foreach($type_arr as $t){
$chars .= $code_arr[$t];
}
$chars = str_shuffle($chars);
$number = $length > strlen($chars) - 1 ? strlen($chars) - 1:$length;
return substr($chars,0,$number);
}
echo random_code_type(8,"alpha-number-sign");#kXM*mC$S
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
PHP文件緩存smarty模板應(yīng)用實(shí)例分析
這篇文章主要介紹了PHP文件緩存smarty模板應(yīng)用方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了smarty模板緩存的相關(guān)使用技巧,需要的朋友可以參考下2016-02-02
TP3.2.3框架使用CKeditor編輯器在頁面中上傳圖片的方法分析
這篇文章主要介紹了TP3.2.3框架使用CKeditor編輯器在頁面中上傳圖片的方法,結(jié)合實(shí)例形式分析了thinkPHP3.2.3框架使用CKeditor編輯器相關(guān)配置方法與操作注意事項(xiàng),需要的朋友可以參考下2019-12-12
ThinkPHP實(shí)現(xiàn)事務(wù)回滾示例代碼
這篇文章主要介紹了ThinkPHP實(shí)現(xiàn)事務(wù)回滾,需要的朋友可以參考下2014-06-06
在Laravel中實(shí)現(xiàn)使用AJAX動(dòng)態(tài)刷新部分頁面
今天小編就為大家分享一篇在Laravel中實(shí)現(xiàn)使用AJAX動(dòng)態(tài)刷新部分頁面,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10
Joomla調(diào)用系統(tǒng)自帶編輯器的實(shí)現(xiàn)方法
這篇文章主要介紹了Joomla調(diào)用系統(tǒng)自帶編輯器的實(shí)現(xiàn)方法,實(shí)例分析了Joomla調(diào)用系統(tǒng)自帶編輯器的具體步驟、相關(guān)函數(shù)與使用技巧,需要的朋友可以參考下2016-05-05
php實(shí)現(xiàn)根據(jù)中獎(jiǎng)概率抽獎(jiǎng)的算法
這篇文章主要為大家介紹了php實(shí)現(xiàn)根據(jù)中獎(jiǎng)概率抽獎(jiǎng)的算法的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
PHP header()函數(shù)使用詳細(xì)(301、404等錯(cuò)誤設(shè)置)
用PHP header()函數(shù)實(shí)現(xiàn)頁面404錯(cuò)誤提示功能,特整理了PHP header()函數(shù)的詳細(xì)使用分享給大家,需要大家多多支持我們2013-04-04
laravel5.5框架的上傳圖片功能實(shí)例分析【僅傳到服務(wù)器端】
這篇文章主要介紹了laravel5.5框架的上傳圖片功能,結(jié)合實(shí)例形式分析了laravel5.5框架將圖片上傳到服務(wù)器端的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-12-12

