<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                驗證規則支持對表單的令牌驗證 **方法1:** 首先需要在你的表單里面增加下面隱藏域: ~~~ <form> ... <input type="hidden" name="__token__" value="{$Request.token}" /> </form> //如果你的令牌名稱不是`__token__`,則表單需要改為: <form> <input type="hidden" name="__hash__" value="{$Request.token.__hash__}" /> <form> ~~~ 然后在你的驗證規則中,添加`token`驗證規則即可,例如,如果使用的是驗證器的話,可以改為: ~~~ protected $rule = [ 'name' => 'require|max:25|token', 'email' => 'email', ]; ~~~ **方法2:** 表單里面增加下面隱藏域: ``` <form> ... {:token()} </form> //如果你的令牌名稱不是`__token__`,則表單需要改為: <form> {:token('__hash__')} <form> ``` 驗證器中需要改為: ~~~ protected $rule = [ 'name' => 'require|max:25|token:__hash__', 'email' => 'email', ]; ~~~ **自定義令牌生成規則** 如果需要自定義令牌生成規則,可以調用`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')} ~~~ ## **實例:** 前臺頁面 ~~~ <form action="{:url('addFormData')}" method="post"> <input type="text" name="name" value="thinkphp"> <input type="text" name="email" value="thinkphp@qq.com"> <input type="text" name="zip" value="888888"> <input type="text" name="age" value="20"> <input type="text" name="status" value="2"> {:token('__token__', 'sha1')} <input type="submit" value="提交"> </form> ~~~ 控制器: ~~~ <?php namespace app\index\controller; use think\Controller; class Test extends Controller{ public function index() { return $this->fetch('index@/Test/index'); } public function addFormData(\think\Request $request) { $name=$request->post('name'); $email=$request->post('email'); $zip=$request->post('zip'); $age=$request->post('age'); $status=$request->post('status'); $token=$request->post('__token__'); $data = [ 'name'=>$name, 'email'=>$email, 'zip'=>$zip, 'age'=>$age, 'status'=>$status, '__token__'=>$token ]; $validate = \think\Loader::validate('test');//or $validate = validate('test'); //實例化后還可以動態添加規則 他將合并到Test驗證rule屬性里 $validate->rule([ 'zip' => '/^\d{6}$/', 'status'=> 'number|between:0,2' ]); //實例化后還可以動態添加錯誤信息 他將合并到Test驗證$message屬性里 $validate->message([ 'zip'=>'郵編格式不正確', 'status.between'=>'狀態超出取值范圍', 'status.number'=>'狀態數據類型錯誤', ]); //實例化后可以動態添加自定義的驗證字段描述 $validate->addField([ 'zip'=>'郵編', 'status'=>'狀態', ]); if(!$validate->check($data)){ dump($validate->getError()); } } } ~~~ 驗證器: ~~~ <?php namespace app\index\validate; use think\Validate; class Test extends Validate { //定義驗證規則 |和數組都可以 protected $rule = [ 'name' => 'require|max:25', 'email' => 'email', 'age' => ['number','between'=>'1,120'], '__token__'=>'token' ]; //定義錯誤信息 protected $message = [ 'name.require' => '名稱必須', 'name.max' => '名稱最多不能超過25個字符', 'age.number' => '年齡必須是數字', 'age.between' => '年齡只能在1-120之間', 'email' => '郵箱格式錯誤', ]; //定義驗證字段描述 protected $field=[ 'name' => '名稱', 'age' => '年齡', 'email' => '郵箱', ]; //定義場景(后面根數組是重新定義規則) protected $scene = [ 'edit' => ['name','email','age'=>'require|number|between:1,120'], ]; /** * 自定義動態添加驗證字段描述 */ public function addField($name,$field='') { if (is_array($name)) { $this->field = array_merge($this->field, $name); } else { $this->field[$name] = $field; } return $this; } } ~~~ 當前臺表單提交后,便無法再次提交,每次提交,都會出現“請勿重復提交”提示,無論輸入的數是否改變,所以,可以在前端頁面用js刷新頁面`window.location.reload();` 原理參看擴展-自定義表單令牌章節
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看