Thinkphp 자동 검증 및 자동 완성

7670 단어 php검증 하 다.
Thinkphp 의 자동 검증 과 자동 완성 은 루트 가 제출 한 내용 으로 일부 데 이 터 를 규칙 적 으로 검증 하고 처리 한 후 데이터베이스 에 삽입 합 니 다.
1.자동 인증 형식:

array(
  array(    1,    ,    ,[    ,    ,    ]),
  array(    2,    ,    ,[    ,    ,    ]),
  ......
);
인증 조건:
self::EXISTS_VALIDATE 또는 0 필드 가 존재 하면 인증(기본 값)
self::MUST_VALIDATE 또는 1 은 검증 해 야 합 니 다.
self::VALUE_VALIDATE 또는 2 값 이 비어 있 지 않 을 때 검증
인증 시간:
self::MODEL_INSERT 또는 1 데이터 추가 시 검증
self::MODEL_UPDATE 또는 2 데이터 편집 시 검증
self::MODEL_BOTH 또는 3 모든 상황 에서 검증(기본 값)
2.자동 완성 형식:

array(
  array(    1,    ,[    ,    ]),
  array(    2,    ,[    ,    ]),
   ......
);
완료 시간:
self::MODEL_INSERT 혹은 1   데이터 추가 시 처리(기본 값)
self::MODEL_UPDATE 혹은 2   데이터 업데이트 시 처리
self::MODEL_BOTH 나 3 모든 상황 을 다 처리 합 니 다.
작은 인 스 턴 스(등록)
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">    </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">      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">    </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">  </button>
    </div>
  </div>
</form>

모델(MemberModel)

<?php
namespace Admin\Model;
use Think\Model;
class MemberModel extends Model {

  /*      */
  protected $_validate = array(
    array('username', '', '       !', self::EXISTS_VALIDATE, 'unique', self::MODEL_INSERT),
    array('password', 'require', '      !', self::EXISTS_VALIDATE, '', self::MODEL_INSERT),
    array('repassword', 'password', '       !', self::EXISTS_VALIDATE, 'confirm', self::MODEL_INSERT),
    array('phone','11','        !', self::EXISTS_VALIDATE, 'length', self::MODEL_INSERT),
    array('email', 'email', '       !',self::EXISTS_VALIDATE, '', self::MODEL_INSERT)
  );

  /*      */
  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'));
  }

  /*      */
  public function createTime() {
    return time();
  }

  /*      */
  public function portrait() {
    if($_FILES['portrait']['name']) { //        
      $upload = new \Think\Upload();//       
      $upload->maxSize  =   3145728 ;//         
      $upload->exts   =   array('jpg', 'gif', 'png', 'jpeg');//         
      $upload->rootPath =   './Uploads/portrait/'; //          
      //       
      $info  =  $upload->uploadOne($_FILES['portrait']);
      if(!$info) {//           
        $this->error($upload->getError());
      }else{//              
        $portraitPath = './Uploads/portrait/'.$info['savepath'].$info['savename'];
        $image = new \Think\Image();
        $image->open($portraitPath);
        //          80*80    
        $image->thumb(150, 150,\Think\Image::IMAGE_THUMB_CENTER)->save($portraitPath);
        return $info['savepath'].$info['savename'];
      }
    }
  }
}

대응 하 는 데이터 테이블 구조:

컨트롤 러 에서 데이터베이스 검색 및 삽입:

/*    */
public function register() {
  if(IS_POST) {
    $member = D('member');
    if($member->create()) {
      if($member->add()) {
        $this->success('    !');
      } else {
        $this->error('    !');
      }
    } else {
      exit($member->getError());
    }
  }
  $this->display();
}
이상 이 본문의 전부 이 므 로 여러분 의 학습 에 도움 이 되 기 를 바 랍 니 다

좋은 웹페이지 즐겨찾기