- 浏览: 123158 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
sfcc:
mysql函数-根据经纬度坐标计算距离 -
chaojijing_02:
-¥
'¤
'-'¤
这些是怎么出来的。
java反射之ObjectAnalyzer -
Technoboy:
稍微解释一下就好了...
java反射之ObjectAnalyzer -
peterwei:
lesorb 写道JAVA2中关于反射的应用主要是用来分析类结 ...
java反射之ObjectAnalyzer -
deepfuture:
不是吧,内核中使用汇编语言实现手,可快了
c语言实现字符串拷贝
在CakePHP中,对于模型数据的验证是非常简单的,下面就是我在Blog Model中用到的验证方法:
当然,这是必须的.虽然,客户端验证看起来更加友好,但为了最大限度的防止数据有效性,server的数据验证显的尤为重要!
下面我将全面的绍介下,CakePHP中对于数据验证的规则设定和内置函数以及处理方法:
验证规则
1. Simple Rules (普通的)
2. One Rule Per Field (单的)
3. Multiple Rules per Field (多个)
CakePHP在frame内部内置了很多(详见cake/libs/validation.php中)非常常见的函数来实现了数据验证:
一、内置验证规则
1. alphaNumeric
只包含字母和数字:
2. between
数据长度必须属于一个指定范围,必须提供最小值和最大值:
3. blank
字符是否为空,或仅包含空白字符,例如space,tab :
4. cc
验证信用卡号码是否有效。它需要3个参数:'type', 'deep' and 'regex':
5. comparison
用来比较数值:
6. date
确保数据提交有效的日期格式:
7. decimal
用来检查提交的数据是否是一个有效的十进制整数:
8. email
用来检查输入是否是一个有效的 email 地址(非常常用):
9. equalTo
将确保该值等于,和同类型的特定价值:
10. extension
检查文件的扩展名是否为指定格式,一般用array来限定扩展名:
11. ip
确保提交的是有效的IPv4地址:
12. isUnique
确保该字段是唯一的:
13. minLength
确保数据符合最小长度要求:
14. maxLength
确保数据符合最大长度要求:
15. money
确保该值是一个有效的货币:第二个参数定义符号位于(left/right):
16. inList
这条规则将确保该值属于某一(通常是array)集合:
17. numeric
是否是一个有效的号码(数字):
18. notEmpty
确保字段不为空(常用):
19. phone
验证一个合法的电话号码,缺省为'all'.
如果你想验证某个国家的电话号码,你可以提供一个表达的第二个参数,用以支持其它格式:
20. postal
用来验证邮政编码,缺省为'null'.
可以是美国(us),加拿大(ca) ,英国(uk),德国( de )和比利时(be).
对于其他邮递区号格式,您可以提供一个正则表达式作为第二个参数;
21. range
保证值是在特定的范围内:
22. ssn
ssn(美国)有效的社会安全号码,可以是美国(us),丹麦(dk),荷兰(nl) .
23. url
检查有效的URL格式。
支持HTTP(s)的FTP(s),file,news和的Gopher协议:
二、Custom Validation Rules (自定义验证)
1. Custom Regular Expression Validation (自定义正则表达式验证)
以上,检查的username只包含字母和整数,并且不少于四个字符.
2. Custom Validataion Methods (自定义方法验证)
这个自定义方法避免了code在数据库中出现的次数不超过一定的次数(25).
以上就是CakePHP中关于server端数据验证的方法汇总,如有缈误,欢迎指出,欢迎留言评论!
/** * Blog validate rule * * @var array * @access public */ var $validate = array( 'title'=>array( 'notEmpty' => array( 'rule' => VALID_NOT_EMPTY, 'message' =>'The title is not empty' ), 'notBlank' => array( 'rule' => '/[^\\s]/', 'message' => 'Please input the title!' ) ), 'description'=>array( 'notEmpty' => array( 'rule' => VALID_NOT_EMPTY, 'message' =>'The blog\'s content is not empty' ), 'notBlank' => array( 'rule' => '/[^\\s]/', 'message' => 'Please input the content!' ) ) );
当然,这是必须的.虽然,客户端验证看起来更加友好,但为了最大限度的防止数据有效性,server的数据验证显的尤为重要!
下面我将全面的绍介下,CakePHP中对于数据验证的规则设定和内置函数以及处理方法:
验证规则
1. Simple Rules (普通的)
var $varlidate = array('fieldName' => 'ruleName');
2. One Rule Per Field (单的)
var $varlidate = array( 'fieldName1' => array( 'rule' => 'ruleName', //or: array('ruleName', 'param1', 'param2' ...) 'required' => true, 'allowEmpty' => false, 'on' => 'create', //or: 'update' 'message' => 'Error Message' ) );
3. Multiple Rules per Field (多个)
var $validate = array( 'fieldName' => array( 'ruleName' => array( 'rule' => 'ruleName', ), 'ruleName2' => array( 'rule' => 'ruleName2', ) ) );
CakePHP在frame内部内置了很多(详见cake/libs/validation.php中)非常常见的函数来实现了数据验证:
一、内置验证规则
1. alphaNumeric
只包含字母和数字:
var $validate = array( 'login' => array( 'rule' => 'alphaNumeric', 'message' => 'Usernames must only contain letters and numbers.' ) );
2. between
数据长度必须属于一个指定范围,必须提供最小值和最大值:
var $validate = array( 'password' => array( 'rule' => array('between', 5, 15), 'message' => 'Passwords must be between 5 and 15 characters long.' ) );
3. blank
字符是否为空,或仅包含空白字符,例如space,tab :
var $validate = array( 'id' => array( 'rule' => 'blank', 'on' => 'create' ) );
4. cc
验证信用卡号码是否有效。它需要3个参数:'type', 'deep' and 'regex':
var $validate = array( 'ccnumber' => array( 'rule' => array('cc', array('visa', 'maestro'), false, null), 'message' => 'The credit card number you supplied was invalid.' ) );
5. comparison
用来比较数值:
var $validate = array( 'age' => array( 'rule' => array('comparison', '>=', 18), 'message' => 'Must be at least 18 years old to qualify.' ) ); var $validate = array( 'age' => array( 'rule' => array('comparison', 'greater or equal', 18), 'message' => 'Must be at least 18 years old to qualify.' ) );
6. date
确保数据提交有效的日期格式:
var $validate = array( 'born' => array( 'rule' => 'date', 'message' => 'Enter a valid date in YY-MM-DD format.', 'allowEmpty' => true ) );
7. decimal
用来检查提交的数据是否是一个有效的十进制整数:
var $validate = array( 'price' => array( 'rule' => array('decimal', 2) ) );
8. email
用来检查输入是否是一个有效的 email 地址(非常常用):
var $validate = array('email' => array('rule' => 'email')); var $validate = array( 'email' => array( 'rule' => array('email', true), 'message' => 'Please supply a valid email address.' ) );
9. equalTo
将确保该值等于,和同类型的特定价值:
var $validate = array( 'food' => array( 'rule' => array('equalTo', 'cake'), 'message' => 'This value must be the string cake' ) );
10. extension
检查文件的扩展名是否为指定格式,一般用array来限定扩展名:
var $validate = array( 'image' => array( 'rule' => array('extension', array('gif', 'jpeg', 'png', 'jpg'), 'message' => 'Please supply a valid image.' ) );
11. ip
确保提交的是有效的IPv4地址:
var $validate = array( 'clientip' => array( 'rule' => 'ip', 'message' => 'Please supply a valid IP address.' ) );
12. isUnique
确保该字段是唯一的:
var $validate = array( 'name' => array( 'rule' => 'isUnique', 'message' => 'This name has already been taken.' ) );
13. minLength
确保数据符合最小长度要求:
var $validate = array( 'password' => array( 'rule' => array('minLength', '8'), 'message' => 'Password must be at least 8 characters long.' ) );
14. maxLength
确保数据符合最大长度要求:
var $validate = array( 'name' => array( 'rule' => array('maxLength', '15'), 'message' => 'Names must be no larger than 15 characters long.' ) );
15. money
确保该值是一个有效的货币:第二个参数定义符号位于(left/right):
var $validate = array( 'salary' => array( 'rule' => array('money', 'left'), 'message' => 'Please supply a valid monetary amount.' ) );
16. inList
这条规则将确保该值属于某一(通常是array)集合:
var $validate = array( 'function' => array( 'allowedChoice' => array( 'rule' => array('inList', array('Foo', 'Bar')), 'message' => 'Enter either Foo or Bar.' ) ) );
17. numeric
是否是一个有效的号码(数字):
var $validate = array( 'carNum' => array( 'rule' => 'numeric', 'message' => 'Please supply the number of cars.' ) );
18. notEmpty
确保字段不为空(常用):
var $validate = array( 'title' => array( 'rule' => 'notEmpty', 'message' => 'This field cannot be left blank' ) );
19. phone
验证一个合法的电话号码,缺省为'all'.
如果你想验证某个国家的电话号码,你可以提供一个表达的第二个参数,用以支持其它格式:
var $validate = array( 'phone' => array( 'rule' => array('phone', null, 'us') ) );
20. postal
用来验证邮政编码,缺省为'null'.
可以是美国(us),加拿大(ca) ,英国(uk),德国( de )和比利时(be).
对于其他邮递区号格式,您可以提供一个正则表达式作为第二个参数;
var $validate = array( 'zipcode' => array( 'rule' => array('postal', null, 'us') ) );
21. range
保证值是在特定的范围内:
var $validate = array( 'number' => array( 'rule' => array('range', 0, 10), 'message' => 'Please enter a number between 0 and 10' ) );
22. ssn
ssn(美国)有效的社会安全号码,可以是美国(us),丹麦(dk),荷兰(nl) .
23. url
检查有效的URL格式。
支持HTTP(s)的FTP(s),file,news和的Gopher协议:
var $validate = array( 'urls' => array( 'rule' => 'url' ) );
二、Custom Validation Rules (自定义验证)
1. Custom Regular Expression Validation (自定义正则表达式验证)
var $validate = array( 'username' => array( 'rule' => array('custom', '/[a-z0-9]{4,}$/i'), 'message' => 'Only letters and integers, min 4 characters' ) );
以上,检查的username只包含字母和整数,并且不少于四个字符.
2. Custom Validataion Methods (自定义方法验证)
<?php class User extends AppModel { var $name = 'User'; var $validate = array( 'code' => array( 'rule' => array('limitDuplicates', 25), 'message' => 'This code has been used too many times.' ) ); function limitDuplicates($data, $limit){ $existing_count = $this->find( 'count', array('conditions' => $data, 'recursive' => -1) ); return $existing_count < $limit; } } ?>
这个自定义方法避免了code在数据库中出现的次数不超过一定的次数(25).
以上就是CakePHP中关于server端数据验证的方法汇总,如有缈误,欢迎指出,欢迎留言评论!
发表评论
-
CakePHP开发之调用控制器方法requestAction
2010-09-17 14:41 2280有时候,为了调用上的方便,我们需要使用requestActio ... -
CakePHP开发之controller设置之国际化
2010-09-06 11:08 1457CakePHP中对国际化(internationalizati ... -
CakePHP开发之helpers
2010-09-02 12:08 1372helper顾名思义就是帮助类,主要运用于视图view层. ... -
CakePHP开发之视图缓存
2010-08-31 14:50 2364当对指定URL发起请求时,CakePHP首先检查该URL是否已 ... -
CakePHP开发之controller设置之paginate
2010-08-27 10:51 6027CakePHP中paginate是一个处理分页数据的函数. 配 ... -
CakePHP开发之控制器-Controller
2010-08-24 17:54 4456在CakePHP里,一个controller用于管理应用程序某 ... -
CakePHP之Component设置
2010-08-19 12:35 2438CakePHP的组件Component可以看作是Control ... -
CakePHP之Model函数定义
2010-08-14 14:03 1140在CakePHP中,MVC的架构是清晰的,而在实际做项目中,我 ... -
CakePHP之Model关联对象
2010-08-13 14:50 4494CakePHP 提供关联数据表间的映射,共有4种类型的关联: ... -
CakePHP之启动加载
2010-08-12 10:36 1515首先,在根目录下,app/index.php requi ... -
cakephp开发之bake
2010-08-06 11:07 2987cakephp的bake为开发者提供了很多方便之出: 以win ... -
cakephp开发之脚手架(scaffold)
2010-08-03 17:53 1122脚手架似乎是个偷懒的捷径,但是,在你急切的想要知道一个appl ... -
cakephp开发前期准备三
2010-08-02 17:02 950关于系统的配置,前期的准备都差不多了,但还要注意几点: 1. ... -
cakephp开发前期准备二
2010-07-30 17:23 1435一. 在app/config目录下core.php文件中,定义 ... -
cakephp开发前期准备一
2010-07-29 15:10 958首先:在app目录下定义全局文件. 一般需要定义的app文件主 ... -
cakephp配置部署
2010-07-28 18:19 2325CakePHP是什么: CakePHP 是一个基于PHP,免 ...
相关推荐
在Web应用开发中,数据验证是非常重要的环节之一,它能够确保用户提交的数据符合预期的格式和规则,从而提高应用程序的安全性和用户体验。CakePHP是一款非常流行的PHP框架,它内置了一套强大的验证系统,可以帮助...
9. **验证(Validation)**:手册会介绍如何在模型中设置数据验证规则,确保用户输入的数据符合要求。 10. **调试与性能优化**:学习如何使用 CakePHP 的调试模式进行问题排查,以及如何进行性能优化,如使用缓存和...
5. 数据验证和过滤:CakePHP提供了强大的数据验证工具,确保输入数据的有效性,同时还有过滤功能用于清理数据。 6. 插件系统:CakePHP框架支持插件,这是一种可以添加额外功能的代码包。用户可以通过安装插件来扩展...
2. **自动验证**:对表单数据进行验证,确保输入符合预设规则。 3. **ORM(对象关系映射)**:通过ActiveRecord模式,提供了一种简单的数据库操作方式,无需编写SQL语句。 4. **CRUD操作**:内置创建(Create)、读取...
1. 数据验证:提供内置的验证规则,可轻松确保输入数据的有效性,减少程序错误。 2. 蛋糕式路由:自动映射URL到控制器方法,简化URL管理和路由配置。 3. 自动化 CRUD:支持快速创建、读取、更新和删除数据,降低...
在模型层,CakePHP 提供了强大的表单验证机制。开发者可以在模型中定义验证规则,确保输入数据的完整性和准确性。 **哈希与安全** CakePHP 1.2 包含了加密和哈希类,用于处理密码存储和敏感数据的安全性。例如,`...
打包下载,里面有CakePHP的框架源码,下载后可直接使用,版本是1.1的,稳定版;CakePHP的分页组件源码;CakePHP的中文及英文教程,CHM格式;CakePHP的中文打印版教程,WORD格式,下载后可直接打印,方便的;CakePHP...
3. **模型**:控制器可能会调用模型来进行数据操作,例如查询数据库、验证数据等。 4. **视图**:最后,控制器将处理好的数据传递给视图层进行渲染,然后返回给客户端。 #### 入门指南 **快速启动指南**提供了对 ...
2. 在Controller中设置数据处理:在CakePHP中,所有来自AJAX请求的数据将会被封装在$_POST或$_GET数组中。如果数据为中文并且在控制器中获取时出现了乱码,需要使用iconv函数进行转码。例如,如果请求中的数据编码为...
5. **验证**:CakePHP内置了强大的验证机制,可以方便地对用户输入进行检查,确保数据的安全性和完整性。 6. **烤箱**(Bake):这是CakePHP自带的一个工具,可以自动生成模型、控制器、视图等基础代码,加快开发...
- **配置**:讲解了如何配置CakePHP的各种设置,以适应不同的开发场景。 - **路由**:介绍了CakePHP的路由机制,以及如何自定义URL结构。 - **会话**:解释了会话管理的相关概念,以及CakePHP如何处理会话数据。 - *...
2. **验证**:框架内置的数据验证机制帮助确保输入数据的正确性和安全性。 3. **烤饼规则(Baking)**:CakePHP的Bake工具可以自动生成控制器、模型、视图等文件,加速开发进程。 4. **安全**:CakePHP包含CSRF...
站长百科下载说明.txt**:可能是关于如何从某个网站或资源库下载CakePHP v2.3.0的指南,可能涉及到注意事项、验证下载的完整性以及安装后的初步设置。 **8. 礼品,1G美国主机兑换说明.txt**:这可能与推广活动有关...
打包下载,里面有CakePHP的框架源码,下载后可直接使用,版本是1.1的,稳定版;CakePHP的分页组件源码;CakePHP的中文及英文教程,CHM格式;CakePHP的中文打印版教程,WORD格式,下载后可直接打印,方便的;CakePHP...
9. **自动验证(Validation)**:提供了数据验证规则,确保输入数据的正确性和安全性。 10. **错误处理和日志记录**:优雅地处理异常,记录系统事件,便于调试和问题定位。 通过使用CakePHP,开发者可以快速构建...
cakephp-jwt-auth, 使用JSON网络令牌进行身份验证的CakePHP插件 CakePHP认证插件 包含AuthComponent类认证的插件,用于使用 JSON网络令牌进行身份验证。 你可以在这里详细阅读关于JSON网络令牌规范的详细说明。要求...
- **数据验证**:在模型中定义数据验证规则,例如确保添加的新事项必须包含标题。 - **用户体验优化**:对模型中的时间字段进行格式化处理,提高用户界面的友好性;为应用创建主页,让用户能够方便地访问各个功能...
1. Model:模型层是数据处理的核心,负责与数据库交互,处理业务逻辑和数据验证。开发者可以创建数据模型来代表数据库中的表,通过ORM(对象关系映射)实现数据库操作。 2. View:视图层负责展示用户界面,通常包含...
- **数据验证**:在模型层对输入数据进行验证,确保数据的完整性和正确性。 #### 四、核心组件 - **模型**:深入理解模型的功能,如关联关系、行为(Behavior)、事件等。 - **视图**:掌握视图模板语法、布局...