tp框架---表单验证
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证。分为静态验证和动态验证。
关于基础知识,请查看手册“自动验证”一章。
一、静态验证
(1)在Ceshi/Controller/路径下新建Yanzheng控制器。
YanzhengController.class.php页面
注意:静态定义方式因为必须定义模型类,所以只能用D函数实例化模型
create方法是对表单提交的POST数据进行自动验证
- <?php
- namespace Ceshi\Controller;
- use Think\Controller;
- class YanzhengController extends Controller
- {
- public function jtyz(){
- $n= D("users");
- if(empty($_POST)){
- $this->show();
- }else{
- //验证要在model层写
- if($n->create()){
- echo "验证通过!";
- }else{
- echo $n->getError(); //获取错误信息
- }
- }
- }
- public function _empty(){
- echo "您访问的操作方法不存在!";
- }
- }
(2)在view层做jtyz.html页面
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- </head>
- <body>
- <form action="__ACTION__" method="post">
- <div> 用户名:<input type="text" name="uid"></div>
- <div> 请输入密码:<input type="text" name="pwd1"></div>
- <div> 请再次输入密码:<input type="text" name="pwd2"></div>
- <div> 年龄:<input type="text" name="age"></div>
- <div> 邮箱:<input type="text" name="email"></div>
- <input type="submit" value="验证" />
- </form>
- </body>
- </html>
效果图:
(3)在model层写静态验证的验证:(路径如图)
UsersModel.class.php
- <?php
- namespace Ceshi\Model;
- use Think\Model;
- class UsersModel extends Model
- {
- protected $_validate = array(
- //非空验证
- array("uid","require","用户名不能为空"),
- //相等验证
- array("pwd1","require","密码不能为空"),
- array("pwd2","pwd1","两次密码输入不一致","0","confirm"),
- //范围验证
- array("age","18,30","年龄不在范围内","0","between"),
- //正则验证
- array("email","email","邮箱格式不正确"),
- );
- }
依次验证效果图:
当全部为空时,点击验证
提示:
当输入用户名后,点击验证:
显示:
两次密码输入不一致时,会提示;年龄不在范围内会提示;邮箱格式不正确时会提示;否则会提示验证通过。
二、动态验证
(1) YanzhengController.class.php页面
- <?php
- namespace Ceshi\Controller;
- use Think\Controller;
- class YanzhengController extends Controller
- {
- //非空验证 静态
- // public function jtyz(){
- // $n= D("users");
- //
- // if(empty($_POST)){
- //
- // $this->show();
- //
- // }else{
- // //验证要在model层写
- // if($n->create()){
- // echo "验证通过!";
- // }else{
- // echo $n->getError(); //获取错误信息
- // }
- // }
- // }
- //动态
- public function dtyz(){
- if(empty($_POST)){
- $this->show();
- }
- else
- {
- //验证规则
- $rules = array(
- array('uid','require','用户名不能为空!'),
- );
- $u= M("users");
- if($u->validate($rules)->create()){
- $this->ajaxReturn("OK","eval"); //如果成功
- }else{
- $this->ajaxReturn($u->getError(),"eval"); //如果不成功
- }
- }
- }
- public function _empty(){
- echo "您访问的操作方法不存在!";
- }
- }
(2) dtyz.html页面:
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <!--引入js-->
- <script src="__ROOT__/Public/js/jquery-1.11.2.min.js"></script>
- </head>
- <body>
- <form action="__ACTION__" method="post">
- <div> 用户名:<input type="text" name="uid" id="uid"><span id="ts"></span></div>
- <input type="submit" value="验证" />
- </form>
- </body>
- <script>
- //文本框失去焦点时,显示提示信息
- $("#uid").blur(function(){
- var uid = $(this).val();
- $.ajax({
- url:"__ACTION__",
- data:{uid:uid},
- type:"POST",
- dataType:"TEXT",
- success:function(data){
- alert(data);
- if(data.trim()=="OK")
- {
- $("#ts").html("验证通过!");
- }else{
- $("#ts").html("用户名不能为空!");
- }
- }
- });
- })
- </script>
- </html>
看一下效果:
当文本框失去焦点时:
当文本框有内容时,再失去焦点:
tp框架---表单验证的更多相关文章
- tp框架表单验证
之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...
- tp框架表单验证 及ajax
之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...
- tp框架表单提交注意!不要提交到当前方法
tp框架 表单提交到当前方法,会重复执行显示部分和保存部分的代码.导致不知名的错误.
- ThinkPHP框架表单验证
对注册到test表的表单进行验证 在注册之前要对表单进行验证: 用户名非空验证,两次输入密码必须一致即相等验证,年龄在18~50之间即范围验证,邮箱格式正则验证. 自动验证是ThinkPHP模型层提供 ...
- php--yii框架表单验证
在视图层利用表单小部件生成表单时,field只能是数据库中存在的, 例如: use yii\helpers\Html; use yii\widgets\ActiveForm; use yii\capt ...
- ThinkPHP框架表单验证AJAX
验证有两种方式:静态验证与动态验证. 一.静态验证 在模型类里面预先定义好该模型的自动验证规则,我们称为静态定义. 验证时要在test表的Model里面加验证条件:新建testModel.class. ...
- Yii 框架表单验证---实例
- laravel框架——表单验证
创建路由 Route::get('test','VerController@index'); Route::post('tosubmit','VerController@tosubmit'); 在控制 ...
- php---tp框架---表单验证
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证.分为静态验证和动态验证. 关于基础知识,请查看手册"自动验证"一章 ...
随机推荐
- vegas pro 15解决导入的视频和音频有噪声问题,亲测可行
中文步骤: 按住Shift->点击选项->首选项,松开Shift 点击右上角"内部"选项卡,在最下面的搜索栏输入SO4 找到第二项Enable So4 Compound ...
- MyEclipse获取注册码
最近刚装上MyEclipse,一直弹窗提示注册码过期,开始还能接受,到最后,每发布一个项目便弹窗提醒,顿时感觉烦了,得治理治理这个烦人的注册码,下面是一段自动生成注册名和注册码的代码,只需要直接拿来用 ...
- Vue 爬坑之路—— 使用 Vuex + axios 发送请求
Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource 目前主流的 Vue 项目,都选择 axios ...
- Android 性能测试初探(六)
书接前文 Android 性能测试初探之功耗(五) 本节聊聊性能测试的最后一项- 流量,当然我所指的性能测试是针对大部分应用而言的,可能还有部分应用会关注网速.弱网之类的测试,但本系列文章都不去一一探 ...
- marquee图片无缝拼接滚动
marquee图片无缝滚动 先了解一下对象的几个的属性: innerHTML: 设置或获取位于对象起始和结束标签内的 HTML scrollHeight: 获取对象的滚动高度. scrollL ...
- Spring Cloud系列(三) 应用监控与管理Actuator
Spring Cloud系列(二) 应用监控与管理Actuator 前言:要想使用Spring Cloud ,Spring Boot 提供的spring-boot-starter-actuator模块 ...
- (23)Spring Boot启动加载数据CommandLineRunner【从零开始学Spring Boot】
[Spring Boot 系列博客] )前言[从零开始学Spring Boot] : http://412887952-qq-com.iteye.com/blog/2291496 )spring bo ...
- (19)Spring Boot 添加JSP支持【从零开始学Spring Boot】
[来也匆匆,去也匆匆,在此留下您的脚印吧,转发点赞评论: 您的认可是我最大的动力,感谢您的支持] 看完本文章您可能会有些疑问,可以查看之后的一篇博客: 81. Spring Boot集成JSP疑问[从 ...
- 洛谷 P1640 BZOJ 1854 [SCOI2010]连续攻击游戏
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
- 洛谷 P2587 BZOJ 1034 [ZJOI2008]泡泡堂
题目描述 //不知道为什么BZOJ和洛谷都没有这幅图了,大牛们几年前的博客上都有这幅图的,把它贴上来吧 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省 ...