自动创建:创建数据模型。

 $User->create();

自动验证:验证提交的表单数据。

 protected $_validate = array(
array('verify','require','验证码必须!'), //默认情况下用正则进行验证
array('name','','帐号名称已经存在!',,'unique',), // 在新增的时候验证name字段是否唯一
array('value',array(,,),'值的范围不正确!',,'in'), // 当值不为空的时候判断是否在一个范围内
array('repassword','password','确认密码不正确',,'confirm'), // 验证确认密码是否和密码一致
array('password','checkPwd','密码格式不正确',,'function'), // 自定义函数验证密码格式
);

自动完成:处理提交的表单数据。

 protected $_auto = array (
array('status',''), // 新增的时候把status字段设置为1
array('password','md5',,'function') , // 对password字段在新增的时候使md5函数处理
array('name','getName',,'callback'), // 对name字段在新增的时候回调getName方法
array('create_time','time',,'function'), // 对create_time字段在更新的时候写入当前时间戳
);

实例代码:

注册用户代码:

 /**
* 注册用户
*/
public function doregister(){
//创建模型,
//D:先检测是否有自定义模型,如没有执行默认Model
//M:直接执行默认Model
$user = D('User'); //创建数据,并验证
if( !$user->create() ) {
//验证失败
$this->error($user->getError(), '/Login/register.html');
} //写入数据
$res = $user->add(); //判断是否写入成功
if($res > ) {
//注册成功,发送验证邮件,跳转到登陆页面. //TODO:发送验证邮件至注册邮箱,如果成功,跳转至登录页面并提示信息。否则,提示验证邮件发送失败,请联系管理员。 $this->success('注册成功,请登录填写邮箱进行验证!', '/Login/login.html');
}else {
//注册失败
$this->error('注册用户失败!', '/Login/register.html');
}
}

User表,实体模型(自动验证,自动完成):

 <?php
/**
* 用户模型类
*/
class UserModel extends Model{
/**
* 自动验证数组,用于验证数据
*/
protected $_validate=array(
//验证码,不为空,且必须填写正确
array('verifycode','require','验证码必须填写!'),
array('verifycode','checkCode','验证码错误,请重新填写!',,'callback',), //用户名,不为空,不能重复,且符合6-18之间,字母,数字,下划线。
array('username','require','用户名必须填写!'),
array('username','','用户名已存在,请重新填写!', , 'unique'),
array('username', '/^[a-zA-Z0-9_]{3,16}$/', '用户名必须以字母,数字,下划线,且6-18位之间!', , 'regex'), //密码,不为空,是否填写,两次密码是否相同
array('password', 'require', '密码必须填写!'),
array('repassword', 'require', '重复密码必须填写!'),
array('password', 'repassword', '两次密码不相同!', , 'confirm'), //性别,只能为1或0
array('sex', '/^[01]$/', '性别选择出错!', , 'regex'),
); /**
* 自动完成数组,用于处理数据
*/
protected $_auto = array(
//密码,MD5加密处理
array('password', 'md5', , 'function'),
); /**
* 判定验证码
*/
protected function checkCode($code){
if(md5($code)!=$_SESSION['verify']){
return false;
}else{
return true;
}
}
}

ThinkPHP - 自动创建 + 自动验证 + 自动完成的更多相关文章

  1. ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)

    原文:ThinkPHP 自动创建数据.自动验证.自动完成详细例子介绍(十九) 1:自动创建数据 //$name=$_POST['name']; //$password=$_POST['password ...

  2. SQL自动创建表和自动插入字段实例

    USE [UMoney] GO /****** Object: StoredProcedure [dbo].[WCL_WorkerStatDailyWrite] Script Date: 10/08/ ...

  3. Hibernate自动创建表

    只要在hibernate.cfg.xml添加这句话,就可以自动生成数据表 <property name="hibernate.hbm2ddl.auto">update& ...

  4. thinkphp自动创建数据对象分析

    thinkphp有一个自动创建数据对象的create方法,核心代码如下 public function create($data='',$type='') { // 如果没有传值默认取POST数据 i ...

  5. springboot activiti关闭验证自动部署

    # spring-activiti # 自动部署验证设置:true-开启(默认).false-关闭 spring.activiti.check-process-definitions=false # ...

  6. Hibrenate实现根据实体类自动创建表或添加字段

    Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步. 实现: 在配置hibernate的配置文件中将hbm2ddl.auto设置为update,如:Xml代码&l ...

  7. Springboot项目启动后自动创建多表关联的数据库与表的方案

    文/朱季谦 在一些项目开发当中,存在这样一种需求,即开发完成的项目,在第一次部署启动时,需能自行构建系统需要的数据库及其对应的数据库表. 若要解决这类需求,其实现在已有不少开源框架都能实现自动生成数据 ...

  8. [.NET] WebApi 生成帮助文档及顺便自动创建简单的测试工具

    ==========最终的效果图========== ==========下面开始干活:生成帮助文档========== 一.创建 WebApi 项目 二.找到 HelpPageConfig.cs 并 ...

  9. oracle11g interval(numtoyminterval())自动创建表分区

    Oracle11g通过间隔分区实现按月创建表分区 在项目数据库设计过程中由于单表的数据量非常庞大,需要对表进行分区处理.由于表中的数据是历史交易,故按月分区,提升查询和管理. 由于之前对于表分区了解不 ...

随机推荐

  1. spring4.1.3+springmvc+mybatis3.2.1整合

    注意:这里使用了mybatis3.2.1版本,刚开始用了3.4.1的版本,会报一个很奇怪的错(java.lang.AbstractMethodError: org.mybatis.spring.tra ...

  2. UVa1586 Molar mass

    #include <stdio.h> int GetQuantity(char* q, char** p){    int quantity = 0;    while (*q & ...

  3. MySQL 事物

    BEGIN DECLARE result INTEGER DEFAULT 0; -- 标记是否出错 DECLARE t_error INTEGER DEFAULT 0; -- 如果出现sql异常,则将 ...

  4. oracle如何修改字段类型(oracle总体知识2)

    在一次做开发的时候,遇到需要将数据表的字段类型由number改成varchar,可是该字段又有值, 用  alter table t-name modify cname newType;会报错. 话说 ...

  5. arm中的ldr指令

    label .equ 0x53000000 ldr r0, label : 将0x53000000地址处的值放入r0中 ldr r0, =label : 将0x53000000付值给r0.

  6. Java并发编程总结2——慎用CAS(转)

    一.CAS和synchronized适用场景 1.对于资源竞争较少的情况,使用synchronized同步锁进行线程阻塞和唤醒切换以及用户态内核态间的切换操作额外浪费消耗cpu资源:而CAS基于硬件实 ...

  7. Oracle 动态查询,EXECUTE IMMEDIATE select into使用方法

    create or replace procedure TEST_TABLE is l_table_name varchar2(50); query_stat varchar2(100); l_zyq ...

  8. The document "ViewController.xib" could not be opened. Could not read archive.

    The document "ViewController.xib" could not be opened. Could not read archive. Please use ...

  9. Maven模块聚合与继承

    聚合 假如有account-email和account-persist两个模块,我们想要一次构建这两个项目,这时须要用到聚合. 聚合模块 package值必须为pom 必须有元素modules mod ...

  10. ExtJS中form提交之后获取返回的json值

    simpleForm.form.doAction('submit', { url : 'editUserType', method : 'post', params : '', // 提交成功后执行s ...