亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 25
粉絲 1
評論 0
訪問量 29235
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
form表單模擬用戶注冊(不帶數(shù)據(jù)庫操作),表單令牌--20190325
曲小冷
原創(chuàng)
1303人瀏覽過

使用form表單模擬用戶注冊,主要用到:表單令牌+驗證碼+獨立驗證器

令牌表單

表單令牌的作用在于防止數(shù)據(jù)的重復(fù)提交,原理是生成一個token值,用session緩存起來,這個過程是在打開填寫表單的頁面時就生成了,然后我們填寫完數(shù)據(jù)是提交到php頁面,此時的token值會和之前緩存起來的值進行對比,如果不一樣就會報錯。如果token一樣則不會重復(fù)提交數(shù)據(jù)的(后臺處理)

驗證規(guī)則支持對表單的令牌驗證,首先需要在你的表單里面增加下面隱藏域:

<input type="hidden" name="__token__" value="{$Request.token}" />
或
{:token()}

然后在你的驗證規(guī)則中,添加token驗證規(guī)則即可,例如,如果使用的是驗證器的話,可以改為:

protected $rule = [
        'name'  =>  'require|max:25|token',
        'email' =>  'email',
    ];

如果你的令牌名稱不是__token__,則表單需要改為:

<input type="hidden" name="__hash__" value="{$Request.token.__hash__}" />
或者:
{:token('__hash__')}

驗證器中需要改為:

protected $rule = [
     'name'  =>  'require|max:25|token:__hash__',
     'email' =>  'email',
];

如果需要自定義令牌生成規(guī)則,可以調(diào)用Request類的token方法,例如:

namespace app\index\controller;
use think\Controller;
class Index extends Controller{
    public function index()
    {
        $token = $this->request->token('__token__', 'sha1');
        $this->assign('token', $token);
        return $this->fetch();
    }
}

然后在模板表單中使用:

<input type="hidden" name="__token__" value="{$token}" />
或者不需要在控制器寫任何代碼,直接在模板中使用:
{:token('__token__', 'sha1')}

驗證碼:兩種使用方式

首先使用Composer安裝think-captcha擴展包:

composer require topthink/think-captcha

1、框架的內(nèi)置驗證功能

在模版內(nèi)添加驗證碼的顯示代碼

<div>{:captcha_img()}</div>
或者
<div><img src="{:captcha_src()}" alt="captcha" /></div>

然后使用框架的內(nèi)置驗證功能(具體可以參考驗證章節(jié)),添加captcha驗證規(guī)則即可

$this->validate($data,[
    'captcha|驗證碼'=>'require|captcha'
]);

如果沒有使用內(nèi)置驗證功能,則可以調(diào)研內(nèi)置的函數(shù)手動驗證

if(!captcha_check($captcha)){
 // 驗證失敗操作
 };

2、調(diào)用Captcha類

use think\captcha\Captcha;
class Index {
	public function verify()
    {
        $captcha = new Captcha();
        return $captcha->entry();    
    }
}

在模板中就可以使用下面的代碼顯示驗證碼圖片

<div><img src="{:url('index/verify')}" alt="captcha" /></div>

使用captcha類還可以修改驗證碼顯示的屬性:

例如 $captcha->useZh = true;     // 使用中文驗證碼

capcha.png

顯示結(jié)果

yzm.png

————————————————————————————————————————————————

案例:

控制器代碼

// 顯示模板
public function formtoken(){
    return $this->fetch();
}
// 驗證數(shù)據(jù)
public function formtoken2(){
    //1.從表單獲取到要驗證的數(shù)據(jù)
    $data = Request::param();

    //驗證數(shù)據(jù)
    $validate = Validate::make();
    $res = $validate
        ->rule([
            'email|郵箱'=>'require|email',
            'password|密碼'=>'require',
            'captcha|驗證碼'=>'require|captcha'
            ])
        ->check($data);
    if (false === $res){
        $this->error($validate->getError());
    }
    $this->success('注冊成功','admin');
}
// 模擬登陸成功要跳轉(zhuǎn)到的頁面
public function admin(){
    return $this->display("<h2>歡迎登錄網(wǎng)站后臺!</h2>");
}

模板代碼

<h3>用戶注冊</h3>
<form action="{:url('formtoken3')}" method="post">
    <p>
        <label for="email">郵箱:</label>
        <input type="email" name="email" id="email" />
    </p>
    <p>
        <label for="password">密碼:</label>
        <input type="password" name="password" id="password" />
    </p>
    <p>
        <label for="captcha">驗證碼:</label>
        <input type="text" name="captcha" id="captcha" />
        <span class="captcha"><img src='{:captcha_src()}' alt="captcha" style="width: 250px;" /></span>
    </p>
    <!--添加一個表單隱藏域,將表單令牌發(fā)送到服務(wù)器上的腳本進行驗證 -->
    <input type="hidden" name="__token__" value='{:token()}' />
    <p>
        <button>登錄</button>
    </p>
</form>

注冊界面顯示

注冊界面顯示.png

錯誤提示

錯誤顯示.png

驗證通過

TONGGUO.png

注冊成功跳轉(zhuǎn)

注冊成功跳轉(zhuǎn).png

本博文版權(quán)歸博主所有,轉(zhuǎn)載請注明地址!如有侵權(quán)、違法,請聯(lián)系admin@php.cn舉報處理!
全部評論 文明上網(wǎng)理性發(fā)言,請遵守新聞評論服務(wù)協(xié)議
0條評論
作者最新博文
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費學(xué)