快速生成隨機(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ù)可以做到的話柱恤,我們就沒(méi)有必要使用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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末变屁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子薄料,更是在濱河造成了極大的恐慌敞贡,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摄职,死亡現(xiàn)場(chǎng)離奇詭異誊役,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)谷市,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門蛔垢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人迫悠,你說(shuō)我怎么就攤上這事鹏漆。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵艺玲,是天一觀的道長(zhǎng)括蝠。 經(jīng)常有香客問(wèn)我,道長(zhǎng)饭聚,這世上最難降的妖魔是什么忌警? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮秒梳,結(jié)果婚禮上法绵,老公的妹妹穿的比我還像新娘。我一直安慰自己酪碘,他們只是感情好朋譬,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著兴垦,像睡著了一般徙赢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上滑进,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天犀忱,我揣著相機(jī)與錄音募谎,去河邊找鬼扶关。 笑死,一個(gè)胖子當(dāng)著我的面吹牛数冬,可吹牛的內(nèi)容都是我干的节槐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼拐纱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼铜异!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起秸架,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤揍庄,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后东抹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蚂子,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年缭黔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了食茎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡馏谨,死狀恐怖别渔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤哎媚,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布喇伯,位于F島的核電站,受9級(jí)特大地震影響拨与,放射性物質(zhì)發(fā)生泄漏艘刚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一截珍、第九天 我趴在偏房一處隱蔽的房頂上張望攀甚。 院中可真熱鬧,春花似錦岗喉、人聲如沸秋度。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)荚斯。三九已至,卻和暖如春查牌,著一層夾襖步出監(jiān)牢的瞬間事期,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工纸颜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留兽泣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓胁孙,卻偏偏與公主長(zhǎng)得像唠倦,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涮较,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理稠鼻,服務(wù)發(fā)現(xiàn),斷路器狂票,智...
    卡卡羅2017閱讀 134,628評(píng)論 18 139
  • PHP常用函數(shù)大全 usleep() 函數(shù)延遲代碼執(zhí)行若干微秒候齿。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解...
    上街買菜丶迷倒老太閱讀 1,360評(píng)論 0 20
  • 所有貨幣都需要一些方法來(lái)控制供應(yīng),并強(qiáng)制執(zhí)行各種安全屬性以防止作弊闺属。在法定貨幣方面慌盯,像中央銀行這樣的組織控制貨幣供...
    Nutbox_Lab閱讀 3,083評(píng)論 1 3
  • php usleep() 函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解包屋剑。 uni...
    思?jí)鬚HP閱讀 1,983評(píng)論 1 24
  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,216評(píng)論 0 4