×

thinkphp验证规则

thinkphp验证规则(thinkphp接口验证token)

admin admin 发表于2023-04-01 10:23:09 浏览48 评论0

抢沙发发表评论

本文目录一览:

thinkphp自动验证的验证规则都有哪些

系统内置了一些常用正则验证的规则,可以直接作为验证规则使用,包括:require 字段必须、email 邮箱、url URL地址、currency 货币、number 数字。还可以自定义规则。详见《ThinkPHP开发手册 6.15 自动验证》

thinkphp自动验证的问题

给你看我写的一个例子:

//表单验证

protected $_validate=array(

//array('验证字段','验证规则','错误提示',验证条件,附加规则,验证时间)

array('uname','require','用户名必须验证!',1,'regex',3),

//array('username','','用户名已经存在',1,'unique',1),

array('pwd','require','密码必须填写!'),

array('pwd','checkPwd','密码长度不少于6位',1,'callback'),

);

function checkPwd(){

$password=$_POST['pwd'];

if(strlen($password)=6){

return true;

}else {

return false;

}

}

//表单映射

protected $_map=array(

'uname'='username',

'pwd'='password',

);

//自动完成功能

protected $_auto=array(

//array(填充字段,填充内容,填充条件,附加规则) 填充条件:1,插入 2,更新 3,所有的

array('reg_date','getDate',1,'callback'),

array('password','md5',3,'function'),

);

function getDate(){

return date('Y-m-d H:i:s');

}

thinkphp 自动验证 格式

ThinkPHP 自动验证格式如下

array(验证字段,验证规则,错误提示[,验证条件][,附加规则][,验证时间])

ThinkPHP 自动验证定义的附加规则如下:

regex:使用正则进行验证(默认)

unique:验证唯一性

confirm:验证表单中的两个字段是否相同

equal:验证是否等于某个值

in:验证是否在某个范围内

function:使用函数验证

callback:使用方法验证

自动验证例子

各种自动验证参考例子如下:

// 默认情况下用正则进行验证

array('title','require','标题不能为空。'),

array('order','number','排序必须是数字。',2),

array('email','email','邮箱格式不符合要求。'),

array('qq','qq','QQ号码不正确。'),

// 在新增的时候验证标题title字段是否唯一

array('title','','标题已经存在!',0,'unique',1),

// 验证确认密码是否和密码一致

array('repassword','password','确认密码不正确。',0,'confirm'),

// 验证class填写的值为 一班

array('class','一班','班级必须填写一班。',0,'equal'),

// 当值不为空的时候判断是否在一个范围内

array('value',array(1,2,3),'值的范围不正确。',2,'in'),

// 自定义函数验证用户名格式

array('username','checkName','用户名格式不正确。',0,'function'),

// 在注册或更改资料是调用 checkEmail 方法检查邮箱

array('email','checkEmail',1,'callback'),

使用正则表达式(regex)验证

上述几类附加规则中,使用正则表达式是经常使用的,也是系统默认的验证附加规则。系统内置了如下正则检测规则:

require(必须)、email(邮箱格式)、url(URL地址)、currency(货币)、number(数字)、qq(QQ号码)、english(英文字符)。

这些附加规则可以直接使用,如果这些附加规则无法满足要求,可以使用自定义的正则规则:

array('username','/^{3,15}$/','用户名不符合要求。'),

该规则要求用户名只能为英文字符及下划线和数字组成,且长度为3-15个字节。

要了解更多的正则表达式规则参见《PHP 常用正则表达式整理》。

使用自定义函数(function)验证

使用自定义函数验证附加规则,函数可以是 Common/common.php 里的自定义函数,也可以是 PHP 的内置函数:

class UserModel extends Model{

protected $_validate = array(

array('username','checkName','用户名不符合要求。',0,'function'),

};

}

自定义 checkName 函数:

function checkName($username){

if(!preg_match('/^{3,15}$/', $username)){

return false;

}else{

return true;

}

}

提示:对于用户名的规则可以直接使用正则验证而无需函数,在此只是为了演示自定义函数的验证的用法而已。

使用方法(callback)验证

ThinkPHP 自动验证还支持调用当前 Model 类的一个方法来进行验证。

class UserModel extends Model{

protected $_validate = array(

array('email','checkEmail','邮箱已经存在。',1,'callback'),

};

// checkEmail方法

protected function checkEmail(){

$User=new Model('User');

// 新用户注册,验证唯一

if(empty($_POST'uid')){

if($user-getByEmail($_POST'email')){

return false;

}else{

return true;

}

}else{

// 更改资料判断邮箱与其他人的邮箱是否相同

if($user-where("uid!={$_POST'uid'} and email='{$_POST'email'}'")-find()){

return false;

}else{

return true;

}

}

}

}

当 checkEmail 方法返回 false 时,验证就不通过。

可见 ThinkPHP 自动验证功能十分强大,能满足对表单的各种验证要求。