Laravel驗(yàn)證碼工具gregwar/captcha

視頻中作者把驗(yàn)證碼直接放入了laravel自帶的驗(yàn)證里面去了艾扮,
驗(yàn)證是在再帶的login方法里面處理
返回英妓,刷新云头,并把原數(shù)據(jù)帶回去

public function login(Request $request)
{
    if (session('captcha') != $request->get('captcha')){
        return redirect()->refresh()->withInput();
    }
}
圖片.png

Laravel驗(yàn)證碼工具gregwar/captcha

Ps:gregwar/captcha在Composer下載排行中長(zhǎng)居第一名榜位。好用的工具大家都推薦量愧,這個(gè)驗(yàn)證碼工具作者本人也在很多項(xiàng)目中運(yùn)用到了钾菊。給大家推薦的同時(shí)分享點(diǎn)經(jīng)驗(yàn)。

    一偎肃、安裝方法
    1.在項(xiàng)目根目錄下執(zhí)行:

    composer require gregwar/captcha

    2.在composer.json中添加:

      "require": {
        ...
        ...
        "gregwar/captcha": "1.*"
    },
    然后執(zhí)行 composer update

    這樣安裝就算完成了煞烫。

二、使用方法
1.命名空間引入

    use Gregwar\Captcha\CaptchaBuilder; use Gregwar\Captcha\PhraseBuilder;

下面給大家一個(gè)完整的例子

路由定義(注意:該路由放在中間件外)

Route::get('/code/captcha/{tmp}', 'Admin\LoginController@captcha');

    // 驗(yàn)證碼生成
    public function captcha($tmp)
    {

        $phrase = new PhraseBuilder;
        // 設(shè)置驗(yàn)證碼位數(shù)
        $code = $phrase->build(6);
        // 生成驗(yàn)證碼圖片的Builder對(duì)象累颂,配置相應(yīng)屬性
        $builder = new CaptchaBuilder($code, $phrase);
        // 設(shè)置背景顏色
        $builder->setBackgroundColor(220, 210, 230);
        $builder->setMaxAngle(25);
        $builder->setMaxBehindLines(0);
        $builder->setMaxFrontLines(0);
        // 可以設(shè)置圖片寬高及字體
        $builder->build($width = 100, $height = 40, $font = null);
        // 獲取驗(yàn)證碼的內(nèi)容
        $phrase = $builder->getPhrase();
        // 把內(nèi)容存入session
        \Session::flash('code', $phrase);
        // 生成圖片   
        header("Cache-Control: no-cache, must-revalidate");
        header("Content-Type:image/jpeg");
        $builder->output();
    }

模版案例

    <input name="captcha" type="text" placeholder="驗(yàn)證碼">  
    <a onclick="javascript:re_captcha();">  
    ![]({{ URL('/code/captcha/1') }})  
    </a>  

Js點(diǎn)擊換驗(yàn)證碼
/***
此處url的規(guī)則是 /code/captcha/數(shù)字滞详。我們可以在后面加一個(gè)隨機(jī)參數(shù),即可紊馏。后面的數(shù)字如果直接是小數(shù)料饥,或者有小數(shù),其實(shí)是找不到這個(gè)路由的
*/

    <script type="text/javascript">  
    function re_captcha() {  
        $url = "{{ URL('/code/captcha') }}";
        $url = $url + "/1?a=" + Math.random();
            document.getElementById('127ddf0de5a04167a9e427d883690ff6').src = $url;
        }
    </script>  
    如何驗(yàn)證(由于是案例 我只做最基礎(chǔ)的驗(yàn)證)

     public function store(Request $request)
    {

        //
        $data = \Input::all();
        //驗(yàn)證碼驗(yàn)證
        if ($data['captcha'] != \Session::get('code')) {
            return back()
                ->withErrors('驗(yàn)證碼錯(cuò)誤!');
        }
正確方式.png
錯(cuò)誤方式

執(zhí)行登錄的JS方法

//執(zhí)行登錄
function login(form){
    //發(fā)送ajax實(shí)現(xiàn)數(shù)據(jù)的添加
    $.ajax({
         url:"/login",
         type:"post",
         dataType:"json",
         async:true,
         data:$(form).serialize(),
         success:function(data){
            if(data.id>0){
                
            }else{
                $("#error").css({"z-index":"100000","position":"absolute","top":"33%","left":"0","right":"0"});
                $(".modal-body").html(data.info);
                $("#error").show();
                $(".btn-primary").click(function(){
                    $("#error").hide();
                });
            }
         }
    });
    
    return false;
}

處理表單的store

public function store(Request $request)
{
   $data = \Input::all();
    if($data['captcha']!=\Session::get('code')){
        return view("404")->with('info','驗(yàn)證碼錯(cuò)誤...')->with('url','/');
    }
    $res = $this->LoginStore->getAdminUser($data);
    if(!$res){
        return view("404")->with('info','賬號(hào)不存在...')->with('url','/');
    }
    $password = md5($res->name.$data['pass']);    //md5(name連接密碼)

    $md = substr_replace($password,$res->name,0,4);     
    $password = md5($md);
        
            if(isset($res) && !empty($res)){
                if($res->pass ==$password){
                    \Session::put('login',$res);
                    return redirect('/admin');
                }else{
                    return view("404")->with('info','密碼好像有錯(cuò)誤...')->with('url','/');
                }
             }
    return view("404")->with('info','帳號(hào)或密碼不能為空...')->with('url','/');
}      

添加測(cè)試數(shù)據(jù)的時(shí)候瘦棋,可以用以下方法直接添加

添加測(cè)試數(shù)據(jù)
圖片.png

Session::flash()方法每次生成session的時(shí)候稀火,會(huì)把過(guò)去的session銷毀

生成驗(yàn)證碼
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末暖哨,一起剝皮案震驚了整個(gè)濱河市赌朋,隨后出現(xiàn)的幾起案子凰狞,更是在濱河造成了極大的恐慌,老刑警劉巖沛慢,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赡若,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡团甲,警方通過(guò)查閱死者的電腦和手機(jī)逾冬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)躺苦,“玉大人身腻,你說(shuō)我怎么就攤上這事∑ダ澹” “怎么了嘀趟?”我有些...
    開(kāi)封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)愈诚。 經(jīng)常有香客問(wèn)我她按,道長(zhǎng),這世上最難降的妖魔是什么炕柔? 我笑而不...
    開(kāi)封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任酌泰,我火速辦了婚禮,結(jié)果婚禮上匕累,老公的妹妹穿的比我還像新娘陵刹。我一直安慰自己,他們只是感情好哩罪,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布授霸。 她就那樣靜靜地躺著,像睡著了一般际插。 火紅的嫁衣襯著肌膚如雪碘耳。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天框弛,我揣著相機(jī)與錄音辛辨,去河邊找鬼。 笑死瑟枫,一個(gè)胖子當(dāng)著我的面吹牛斗搞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播慷妙,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼僻焚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了膝擂?” 一聲冷哼從身側(cè)響起虑啤,我...
    開(kāi)封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤隙弛,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后狞山,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體全闷,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年萍启,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了总珠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡勘纯,死狀恐怖局服,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情驳遵,我是刑警寧澤腌逢,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站超埋,受9級(jí)特大地震影響搏讶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霍殴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一媒惕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧来庭,春花似錦妒蔚、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至帽衙,卻和暖如春菜皂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背厉萝。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工恍飘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谴垫。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓章母,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親翩剪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子乳怎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

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