ThinkPHP - 自动创建 + 自动验证 + 自动完成

时间:2022-09-24 18:30:26

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

 $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. &lbrack;&period;NET&rsqb; WebApi 生成帮助文档及顺便自动创建简单的测试工具

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

  9. oracle11g interval&lpar;numtoyminterval&lpar;&rpar;&rpar;自动创建表分区

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

随机推荐

  1. 页面加载完成后加载多个函数的js完美解决方案

    function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') ...

  2. Wythoff&&num;39&semi;s game

    这个问题就是OJ题里出现的取石子游戏,http://en.wikipedia.org/wiki/Wythoff%27s_game. 维基里面的通项公式并不适用于算法求解.需要理解下面两条规律: 1.A ...

  3. &lbrack;原创&rsqb;CentOS6&period;4编译安装Facebook的folly库&lpar;gcc4&period;8&period;1boost1&period;5&period;3&rpar;

      Folly: Facebook Open-souce LibrarY,Facebook开源的一个基础组件库,据说在大规模的场景中性能较高.目前因为自己负责的系统有几个地方性能较差,因此特意找来看看 ...

  4. 烽火HG220G 配置

    http://192.168.1.1/backupsettings.html http://192.168.1.1/updatesettings.html 修改连接数限制 <X_CT-COM_M ...

  5. 1 加到 100 的 时间复杂度 C&num;&period;

    //1 加到 100 的 时间复杂度: ; ; ; i <= n; i++){ sum += i; } T() = ; //Initialize 'n'. T() = ; //Initializ ...

  6. c&plus;&plus;之 常用类型

    C/C++常用类型的范围 C/C++里常用的类型及表示范围如下表所示: 类型 sizeof 表示范围 说明 char 1 -128 - 127 -2^7 - (2^7 - 1) short 2 -32 ...

  7. HTTP POST请求的Apache Rewrite规则设置

    最近自测后端模块时有个业务需求需要利用WebServer(我用的是Apache)将HTTP POST请求转发至后端C模块,后端处理后返回2进制加密数据.http post请求的url格式为:     ...

  8. 【Webpack 杂谈】帮助文档翻译:Webpack的模块

    页面出自Webpack官方文档(撰写时,是v4.1.1) 其实Webpack本身有中文文档,不知道是谁去撰写的,但是自己翻译一遍感觉更好理解. https://webpack.js.org/conce ...

  9. Codeforces 1095F Make It Connected 【MST】

    <题目链接> 题目大意: 给定一张n个顶点(每个顶点有点权)的无向图,并且给出边权为wi的m条边,顶点u和顶点v直接如果建边,边权为a_u + a_v,求图连通的最小边权和. 解题分析: ...

  10. python实战博客

    2018-10-31 更新Logging日志记录以及异常捕获 感谢廖大教程.Python实战 直接在闲置的服务器上开发.阿里云Centos 6.8 64位. 1 搭建开发环境 Python 环境是Py ...