您的位置:首页 > 编程语言 > PHP开发

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

2016-02-06 18:11 585 查看
自动创建:创建数据模型。

$User->create();


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

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


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

protected $_auto = array (
array('status','1'),  // 新增的时候把status字段设置为1
array('password','md5',1,'function') , // 对password字段在新增的时候使md5函数处理
array('name','getName',1,'callback'), // 对name字段在新增的时候回调getName方法
array('create_time','time',2,'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 > 0) {
//注册成功,发送验证邮件,跳转到登陆页面.

//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','验证码错误,请重新填写!',0,'callback',1),

//用户名,不为空,不能重复,且符合6-18之间,字母,数字,下划线。
array('username','require','用户名必须填写!'),
array('username','','用户名已存在,请重新填写!', 0, 'unique'),
array('username', '/^[a-zA-Z0-9_]{3,16}$/', '用户名必须以字母,数字,下划线,且6-18位之间!', 0, 'regex'),

//密码,不为空,是否填写,两次密码是否相同
array('password', 'require', '密码必须填写!'),
array('repassword', 'require', '重复密码必须填写!'),
array('password', 'repassword', '两次密码不相同!', 0, 'confirm'),

//性别,只能为1或0
array('sex', '/^[01]$/', '性别选择出错!', 0, 'regex'),
);

/**
* 自动完成数组,用于处理数据
*/
protected $_auto = array(
//密码,MD5加密处理
array('password', 'md5', 1, 'function'),
);

/**
* 判定验证码
*/
protected function checkCode($code){
if(md5($code)!=$_SESSION['verify']){
return false;
}else{
return true;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: