ThinkPHP框架表单验证操作方法

发布时间 - 2026-01-11 02:25:15    点击率:

自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证。分为静态验证和动态验证。

一、静态验证

(1)在Home/Controller/路径下新建Index控制器。IndexController

 IndexController.class.php页面

注意:静态定义方式因为必须定义模型类,所以只能用D函数实例化模型

     create方法是对表单提交的POST数据进行自动验证

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function yanzheng(){
    $u= D("users");//造一个子类对象
    if(empty($_POST)){
      $this->show();
    }else{
      if($u->create()){//验证
        echo"验证通过";
      }else{
        echo $u->getError();//获取错误信息
      }
    }
  }
}  

 (2)在view/Index文件夹下做yanzheng.html页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script src="__ROOT__/Public/js/jquery-3.2.0.min.js"></script>
</head>
<body>
<h1>验证界面</h1>
<form action="__ACTION__" method="post">
<div>用户名:<input type="text" name="uid" /></div>
<div>密码:<input type="password" name="pwd1"/></div>
<div>确认密码:<input type="password" name="pwd2"/></div>
<div>年龄:<input type="text" name="age"/></div>
<div>邮箱:<input type="text" name="Email"/></div>
<div><input type="submit" value="验证" /></div>
</form>
</body>
</html>

 效果图:

(3)在Model层写静态验证的验证:(路径如图)

UsersModel.class.php

<?php
namespace Home\Model;
use Think\Model;
class UsersModel extends Model{
    //添加验证条件
    protected $_validate = array(  
      array("uid","require","用户名不能为空!"), //默认情况下用正则进行验证
      array("pwd1","require","密码不能为空!"),
      array("pwd2","require","密码不能为空!"),   
      array("pwd2","pwd1","两次输入的密码不一致",0,"confirm"), // 验证确认密码是否和密码一致
      array("age","18,50","年龄不在范围内",0,"between"),
      array("Email","email","邮箱格式不正确"),
    );
}

 依次验证效果图:

当全部为空时,点击验证

会跳转

输入用户名,其他不输入时,会跳转

两次密码输入不一致时,会提示;年龄不在范围内会提示;邮箱格式不正确时会提示;

 

输入正确格式内容后

 二、动态验证

(1)  IndexController.class.php页面

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function yz(){
    $u= M("users");//造一个父类对象
    if(empty($_POST)){
      $this->show();
    }else{
      $rules = array(
        array("uid","require","用户名不能为空!"),
      );
      if($u->validate($rules)->create()){//验证
        $this->ajaxReturn("ok","eval");
      }else{
        $this->ajaxReturn("no","eval");
      }
    }
  } 
}

 (2) yz.html页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script src="__ROOT__/Public/js/jquery-3.2.0.min.js"></script>
</head>
<body>
<h1>验证界面</h1>
<form action="__ACTION__" method="post">
<div><input type="text" name="uid" id="uid" /><span id="ts"></span></div>
<div><input type="submit" value="验证" /></div>
</form>
</body>
<script type="text/javascript">
$("#uid").blur(function(){
    var uid = $(this).val();
    $.ajax({
        url:"__ACTION__",
        data:{uid:uid},
        type:"POST",
        dataType:"TEXT",
        success: function(data){
            if(data.trim()=="ok")
            {
              $("#ts").html("验证通过");
            }
            else
            {
              $("#ts").html("用户名不能为空");
            }
          }
      });
  })
</script>
</html>

 看一下效果:

 当文本框失去焦点时:

当文本框有内容时,再失去焦点:

以上所述是小编给大家介绍的ThinkPHP框架表单验证操作方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# tp框架  # 表单验证  # ThinkPHP框架安全实现分析  # thinkphp微信开之安全模式消息加密解密不成功的解决办法  # thinkphp5.1框架容器与依赖注入实例分析  # 对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析  # ThinkPHP表单自动提交验证实例教程  # thinkPHP实现表单自动验证  # ThinkPHP表单自动验证实例  # Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册  # 关于ThinkPhp 框架表单验证及ajax验证问题  # ThinkPHP 表单自动验证运用示例  # thinkPHP自动验证、自动添加及表单错误问题分析  # ThinkPHP中create()方法自动验证表单信息  # TP5框架安全机制实例分析  # 为空  # 两次  # 跳转  # 表单  # 不正确  # 小编  # 无标题文档  # 文本框  # 子类  # 在此  # 他不  # 给大家  # 如图  # 看一下  # 输入用户名  # 错误信息  # 只能用  # 所述  # 给我留言  # 感谢大家 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  Laravel用户密码怎么加密_Laravel Hash门面使用教程  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  手机软键盘弹出时影响布局的解决方法  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  Laravel怎么在Blade中安全地输出原始HTML内容  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  如何快速辨别茅台真假?关键步骤解析  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  公司网站制作价格怎么算,公司办个官网需要多少钱?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  Android滚轮选择时间控件使用详解  如何正确下载安装西数主机建站助手?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  如何确保西部建站助手FTP传输的安全性?  如何快速搭建FTP站点实现文件共享?  如何获取上海专业网站定制建站电话?  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  使用C语言编写圣诞表白程序  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  在线制作视频的网站有哪些,电脑如何制作视频短片?  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  Laravel如何实现用户密码重置功能?(完整流程代码)  焦点电影公司作品,电影焦点结局是什么?  动图在线制作网站有哪些,滑动动图图集怎么做?  制作公司内部网站有哪些,内网如何建网站?  利用python获取某年中每个月的第一天和最后一天  使用Dockerfile构建java web环境  python中快速进行多个字符替换的方法小结  php json中文编码为null的解决办法  浅谈redis在项目中的应用  高性能网站服务器配置指南:安全稳定与高效建站核心方案  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  网站页面设计需要考虑到这些问题  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  如何快速生成专业多端适配建站电话?