Thinkphp實(shí)現(xiàn)自動(dòng)驗(yàn)證和自動(dòng)完成
Thinkphp的自動(dòng)驗(yàn)證和自動(dòng)完成都是根所表單提交的內(nèi)容來(lái)的,對(duì)部分?jǐn)?shù)據(jù)進(jìn)行規(guī)則驗(yàn)證和處理后插入到數(shù)據(jù)庫(kù)。
1、自動(dòng)驗(yàn)證格式:
array( array(驗(yàn)證字段1,驗(yàn)證規(guī)則,錯(cuò)誤提示,[驗(yàn)證條件,附加規(guī)則,驗(yàn)證時(shí)間]), array(驗(yàn)證字段2,驗(yàn)證規(guī)則,錯(cuò)誤提示,[驗(yàn)證條件,附加規(guī)則,驗(yàn)證時(shí)間]), ...... );
驗(yàn)證條件:
self::EXISTS_VALIDATE 或者0 存在字段就驗(yàn)證(默認(rèn))
self::MUST_VALIDATE 或者1 必須驗(yàn)證
self::VALUE_VALIDATE或者2 值不為空的時(shí)候驗(yàn)證
驗(yàn)證時(shí)間:
self::MODEL_INSERT或者1新增數(shù)據(jù)時(shí)候驗(yàn)證
self::MODEL_UPDATE或者2編輯數(shù)據(jù)時(shí)候驗(yàn)證
self::MODEL_BOTH或者3全部情況下驗(yàn)證(默認(rèn))
2、自動(dòng)完成格式:
array( array(完成字段1,完成規(guī)則,[完成條件,附加規(guī)則]), array(完成字段2,完成規(guī)則,[完成條件,附加規(guī)則]), ...... );
完成時(shí)間:
self::MODEL_INSERT或者1 新增數(shù)據(jù)的時(shí)候處理(默認(rèn))
self::MODEL_UPDATE或者2 更新數(shù)據(jù)的時(shí)候處理
self::MODEL_BOTH或者3 所有情況都進(jìn)行處理
小實(shí)例(注冊(cè))
HTML布局:
<form class="form-horizontal" action="{:U('Login/register')}" method="post" autocomplete="off" enctype="multipart/form-data"> <div class="form-group"> <label class="col-lg-2 control-label">用戶名</label> <div class="col-lg-4"> <input class="form-control" type="text" name="username" /> </div> </div> <div class="form-group"> <label class="col-lg-2 control-label">密碼</label> <div class="col-lg-4"> <input class="form-control" type="password" name="password" /> </div> </div> <div class="form-group"> <label class="col-lg-2 control-label">重復(fù)密碼</label> <div class="col-lg-4"> <input class="form-control" type="password" name="repassword" /> </div> </div> <div class="form-group"> <label class="col-lg-2 control-label">頭像</label> <div class="col-lg-4"> <input class="form-control" type="file" name="portrait" id="imgpath" /> <img style="width: 100%;" src="" id="showimgpath" alt="頭像"/> <span class="help-block">關(guān)像的大小為80*80px</span> </div> </div> <div class="form-group"> <label class="col-lg-2 control-label">性別</label> <div class="col-lg-4"> <div class="btn-group" data-toggle="buttons"> <label class="btn btn-default active"> <input type="radio" name="gender" autocomplete="off" value="1" checked /> 男 </label> <label class="btn btn-default"> <input type="radio" name="gender" autocomplete="off" value="0" /> 女 </label> </div> </div> </div> <div class="form-group"> <label class="col-lg-2 control-label">電話號(hào)碼</label> <div class="col-lg-4"> <input class="form-control" type="input" name="phone" /> </div> </div> <div class="form-group"> <label class="col-lg-2 control-label">郵箱</label> <div class="col-lg-4"> <input class="form-control" type="input" name="email" /> </div> </div> <div class="form-group"> <div class="col-lg-2 col-lg-offset-2"> <button class="btn btn-primary btn-block btn-submit" type="submit">注冊(cè)</button> </div> </div> </form>
模型(MemberModel)
<?php namespace Admin\Model; use Think\Model; class MemberModel extends Model { /* 自動(dòng)驗(yàn)證 */ protected $_validate = array( array('username', '', '用戶名是唯一的!', self::EXISTS_VALIDATE, 'unique', self::MODEL_INSERT), array('password', 'require', '沒(méi)有填寫(xiě)密碼!', self::EXISTS_VALIDATE, '', self::MODEL_INSERT), array('repassword', 'password', '重復(fù)密碼不正確!', self::EXISTS_VALIDATE, 'confirm', self::MODEL_INSERT), array('phone','11','電話號(hào)碼長(zhǎng)度不對(duì)!', self::EXISTS_VALIDATE, 'length', self::MODEL_INSERT), array('email', 'email', '郵箱格式不正確!',self::EXISTS_VALIDATE, '', self::MODEL_INSERT) ); /* 自動(dòng)完成 */ protected $_auto = array( array('password', 'encrypt', self::MODEL_INSERT, 'callback'), array('state','1',self::MODEL_INSERT), array('portrait', 'portrait', self::MODEL_INSERT, 'callback'), array('create_time', 'createTime', self::MODEL_INSERT, 'callback') ); /* 給密碼加密 */ public function encrypt() { return md5(crypt(I('post.password/s'), 'zh')); } /* 創(chuàng)建時(shí)間 */ public function createTime() { return time(); } /* 上傳頭像 */ public function portrait() { if($_FILES['portrait']['name']) { // 如果上傳的頭像 $upload = new \Think\Upload();// 實(shí)例化上傳類 $upload->maxSize = 3145728 ;// 設(shè)置附件上傳大小 $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設(shè)置附件上傳類型 $upload->rootPath = './Uploads/portrait/'; // 設(shè)置附件上傳根目錄 // 上傳單個(gè)文件 $info = $upload->uploadOne($_FILES['portrait']); if(!$info) {// 上傳錯(cuò)誤提示錯(cuò)誤信息 $this->error($upload->getError()); }else{// 上傳成功 獲取上傳文件信息 $portraitPath = './Uploads/portrait/'.$info['savepath'].$info['savename']; $image = new \Think\Image(); $image->open($portraitPath); // 生成一個(gè)居中裁剪為80*80的縮略圖 $image->thumb(150, 150,\Think\Image::IMAGE_THUMB_CENTER)->save($portraitPath); return $info['savepath'].$info['savename']; } } } }
對(duì)應(yīng)的數(shù)據(jù)表結(jié)構(gòu):
在控制器中檢測(cè)及插入到數(shù)據(jù)庫(kù):
/* 注冊(cè) */ public function register() { if(IS_POST) { $member = D('member'); if($member->create()) { if($member->add()) { $this->success('注冊(cè)成功!'); } else { $this->error('注冊(cè)失敗!'); } } else { exit($member->getError()); } } $this->display(); }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助
- 基于thinkPHP3.2實(shí)現(xiàn)微信接入及查詢token值的方法
- Thinkphp5 微信公眾號(hào)token驗(yàn)證不成功的原因及解決方法
- ThinkPHP5.1表單令牌Token失效問(wèn)題的解決
- ThinkPHP表單自動(dòng)提交驗(yàn)證實(shí)例教程
- ThinkPHP驗(yàn)證碼使用簡(jiǎn)明教程
- ThinkPHP令牌驗(yàn)證實(shí)例
- thinkPHP實(shí)現(xiàn)表單自動(dòng)驗(yàn)證
- ThinkPHP表單自動(dòng)驗(yàn)證實(shí)例
- ThinkPHP5 驗(yàn)證器的具體使用
- thinkPHP中驗(yàn)證碼的簡(jiǎn)單使用方法
- thinkphp5框架API token身份驗(yàn)證功能示例
相關(guān)文章
php 截取字符串并以零補(bǔ)齊str_pad() 函數(shù)
str_pad() 函數(shù)把字符串填充為指定的長(zhǎng)度,需要的朋友可以參考下。2011-05-05PHP中執(zhí)行MYSQL事務(wù)解決數(shù)據(jù)寫(xiě)入不完整等情況
事務(wù)可以進(jìn)行模擬SQL操作,當(dāng)所有的SQL都操作成功的時(shí)候才進(jìn)行SQL操作,只要有一個(gè)操作失敗就回滾當(dāng)前事務(wù)的所有SQL操作,避免出現(xiàn)上面描述中出現(xiàn)的數(shù)據(jù)寫(xiě)入不完整等情況2014-01-01php simplexmlElement操作xml的命名空間實(shí)現(xiàn)代碼
這是今天中午發(fā)生的事情,有人在群里求助,比如xml中如果標(biāo)記是<xx:xxxx>content</xx:xxxx>這樣的情況下,取不到 xx:xxxx 為下標(biāo)的值。2011-01-01深入PHP中的HashTable結(jié)構(gòu)詳解
本篇文章是對(duì)PHP中的HashTable結(jié)構(gòu)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06PHP關(guān)于IE下的iframe跨域?qū)е聅ession丟失問(wèn)題解決方法
一個(gè)登錄頁(yè)面,被別的網(wǎng)站用iframe嵌進(jìn)去后,死活無(wú)法登錄(只在IE中存在這種情況)。主要是session無(wú)法被保存的問(wèn)題,下面把個(gè)人的解決過(guò)程分享個(gè)大家2013-10-10