首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将表单输入数据与自定义codeigniter表单验证器中的数据库数据进行比较?

在CodeIgniter中,可以通过自定义表单验证器来比较表单输入数据与数据库数据。下面是一个实现的步骤:

  1. 创建一个自定义的表单验证器类,可以命名为Custom_validator,并将其放置在CodeIgniter的application/libraries目录下。
代码语言:php
复制
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Custom_validator
{
    protected $CI;

    public function __construct()
    {
        $this->CI =& get_instance();
        $this->CI->load->database(); // 加载数据库类
    }

    // 自定义验证规则方法
    public function compare_data($str, $field)
    {
        list($table, $column) = explode('.', $field, 2);

        $query = $this->CI->db->select($column)
                             ->from($table)
                             ->where($column, $str)
                             ->get();

        if ($query->num_rows() === 0) {
            return FALSE; // 数据库中不存在该数据
        } else {
            return TRUE; // 数据库中存在该数据
        }
    }
}
  1. 在CodeIgniter的配置文件application/config/form_validation.php中,添加自定义验证规则的配置。
代码语言:php
复制
$config = array(
    'custom_validation' => array(
        array(
            'field' => 'input_field',
            'label' => 'Input Field',
            'rules' => 'required|compare_data[table_name.column_name]'
        )
    )
);
  1. 在控制器中使用自定义验证规则。
代码语言:php
复制
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Your_controller extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->library('form_validation');
        $this->load->library('custom_validator'); // 加载自定义验证器类
    }

    public function your_form_submit()
    {
        $this->form_validation->set_rules($this->config->item('custom_validation'));

        if ($this->form_validation->run() === FALSE) {
            // 验证失败
        } else {
            // 验证成功
        }
    }
}

在上述代码中,compare_data方法用于比较表单输入数据与数据库中的数据。在配置文件中,compare_data[table_name.column_name]指定了要比较的数据库表和字段。在控制器中,通过加载自定义验证器类,并在表单验证规则中使用compare_data规则来调用自定义验证规则。

这样,当表单提交时,CodeIgniter会自动调用自定义验证器类中的compare_data方法进行验证,根据返回结果判断验证是否通过。

注意:以上代码仅为示例,实际应根据具体情况进行调整和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django def clean()函数对表单数据进行验证操作

最近写资源策略管理,在ceilometer 创建alarm时,name要求是不能重复,所以在创建policy时候,要对policyname字段进行验证,而django中正好拥有强大表单数据验证功能...“Name”)) #在clean函数先取出表单name字段,在从数据库里面拿到所有的数据进行检查 def clean(self): cleaned_data = super(CreatePolicyForm...') % name ) return cleaned_data 补充知识:django关于表单自定义验证和常用验证 常用验证: 在验证某个字段时候...比如在注册表单验证,我们想要验证手机号码是否已经被注册过了,那么这时候就需要在数据库进行判断才知道。...以上这篇Django def clean()函数对表单数据进行验证操作就是小编分享给大家全部内容了,希望能给大家一个参考。

2.1K20

登录注册小案例实现(使用Djangoform表单进行用户输入数据校验)

,这个表单可以用来验证数据合法性还可以用来生成HTML代码 所以这个登录注册案例我们就来使用这个django自带form来生成前端页面以及验证数据. ②关于django form表单使用: 创建一个...使用is_valid()方法可以验证用户提交数据是否合法,而且HTML表单元素name必须和django表单name保持一致,否则匹配不到....(比如此例request.POST获取HTML表单元素name属性值form表单name是一样:username,password) is_bound属性:用来表示form是否绑定了数据,...: 下面这个函数clean()是用于进行数据验证,本来我想也写在此form表单校验里,但是后面在视图函数里写业务逻辑时发现, 如果验证成功,用户需要登录->这就意味着需要设置session...""" # def clean(self): # 前端表单用户输入数据经过上面过滤后再结合后台数据库所有数据进行分析 # # 校验数据库是否有该用户 #

4.3K00

登录注册小案例实现(使用Djangoform表单进行用户输入数据校验)

登录注册案例 1.登录注册第一步——创建模型生成数据表: (1)名为mucisapp下models.py文件创建: from django.db import models # Create your...models.CharField(max_length=30, unique=True) password = models.CharField(max_length=50) (2)执行映射文件生成数据表...:别看我这注册和登录页面一模一样,你就以为这俩直接共用一个模板就行了!...真正使用时候注册需要信息是比登录要多,所以这俩不可能使用同一个模板。本处为了方便讲解,所以只建了个含有用户名和密码模型。所以会造成注册和登录可以用同一个模板假象!...不信你看我在下面注册模板又随便加了个输入框,但是其实它没用,我只是为了强调这个问题! <!

4.7K00

讲解-加载静态页

接下来,您将创建一个新闻部分,该部分将从数据库读取新闻项。最后,您将添加一个表单以在数据库创建新闻项。...本教程将主要关注: 模型-视图-控制基础知识 路由基础 表格验证 使用“查询生成器”执行基本数据库查询 整个教程分为几页,每页仅解释CodeIgniter框架功能一小部分。...您将浏览以下页面: 简介,此页面为您提供了预期概述。 静态页面,它将教您控制,视图和路由基础知识。 新闻部分,您将在这里开始使用模型,并将进行一些基本数据库操作。...创建新闻项,这将引入更高级数据库操作和表单验证。 结论,这将为您提供进一步阅读和其他资源一些指示。 享受您对CodeIgniter框架探索。...在你浏览输入 [your-site-url]index.php/pages/view 来查看你页面。

3.5K10

CI一些优秀实践

首先是 MVC 如果你还不知道 MVC ,应该尽快学习,你会很快体会到在 Model 数据访问,在 Controller 中进行业务逻辑,在 Views 编写 HTML 代码价值。...安全问题很重要 在接收任何数据到你程序之前,不管是表单提交 POST 数据、COOKIE 数据、URI 数据、XML-RPC 数据、还是 SERVER 数组数据,我们都推荐你实践下面的三个步骤:...验证数据以确保符合正确类型, 长度, 大小等. (有时这一步骤也可取代第一步骤) 在提交数据到你数据库之前将其转换....可以参考CI手册上安全指南 以及 输入和安全类。也许最重要原则是在把数据提交到数据库或文件系统之前检查所有用户输入。 SQL注入。...通过保护你邮件表单,评论表单,以及其他各种免费用户提交数据来防止垃圾信息,一个简单方法是只允许一个IP/User客户端在一分钟之内只能提交一次,一个比较方式是使用 Captcha ,CI2内置了一个

3.3K50

PHP 后端表单验证和请求处理

数据表和模型类 我们会将用户提交请求数据保存到 messages 表,所以我们需要在数据库中新增这张数据表: -- -- 数据库: `blog` -- -- -------------------...做好上述准备后,接下来,我们在 HomeController 控制 contact 方法,编写表单数据获取、验证和保存代码: public function contact() { if...因此,filter_var 函数可以根据传入第二个参数标识进行不同操作,既可以用于字段验证,也可以用作消毒处理,还可以通过回调函数进行额外自定义操作,更多细节请参考 PHP 官方文档关于该函数介绍...至此,我们就完成了 POST 表单请求所有后端处理逻辑,在浏览打开联系表单页面,如果输入了错误手机号,会返回对应验证错误消息: ?...如果所有表单数据都通过验证,则会看到消息发送成功提示: ? 当然,这里还有可以优化地方,比如,在请求数据验证失败后,返回提交请求数据填充对应输入框,以免用户重新输入

2.6K30

盘点7款顶级 PHP Web 框架

Laravel优势:易于学习;无缝数据迁移;在 PHP 社区很受欢迎;MVC 架构支持;大量培训材料(文档、图像和视频教程);模板引擎;简单单元测试等。...这个功能强大且易于使用框架适用于各种 Web 应用。 Yii2 优势:AJAX 支持;处理错误有效工具;自定义默认设置;简单第三方组件集成;强大社区支持等。...Zend优势:实时在线调试;PHP 单元测试工具;连接数据库向导;加密编码工具;具有前端技术支持拖放编辑;MVC 组件;卓越前端技术支持工具;简单云 API;支持第三方组件;数据加密等。...它还具有这些增强安全功能:SQL 注入预防;跨域请求(CSRF)保护;输入验证;跨站点脚本(XSS)保护;该框架带来了代码生成和脚手架功能,以加速开发过程。...使用可重用组件,开发时间减少了许多模块,如表单创建、对象配置、模板等。可以直接从旧组件构建,节约了大量成本。

4.6K00

3分钟短文:十年窖藏,Laravel告诉你表单验证“正确姿势”

引言 上一章我讲到了使用FormBuilder让后端开发者快速构建前端表单页面,而为了示例, 直接在store方法内把表单数据一股脑存到了数据库。 这!很!危!险!...[img] 本文教你正确地验证用户表单提交数据,那就是十余年坚定好用Laravel验证。...把Request请求表单数据原封不动地传入到create方法内, 并写入了数据库。 当然,在Event模型内,我已经加上 $fillable 用于标记那些可以写入数据字段了,但是仍然不够。...用户输入从来都不能直接拿来用,我要做一个关卡,层层把关,有效数据放进去,无效数据挡在门外。...Validator就是这样设计! 写在最后 本文初步介绍了laravel验证内置规则使用,以及如何将验证信息渲染到视图文件内。 并介绍了自定义验证错误提示信息使用方法。

1.6K30

PHP面试题,面试必看!

概念,尝试使用‘对象’进行数据使用,或者使用’db’方法进行数据库操作,也提醒一下部分‘滥 用’’toArray’开发者,’all’或’select’结果是对象数组集合,是无法使用’toArray...==Lavarel优点==: 1.支持Composer 2.框架结构比较清晰,注重代码模块化(抽象了中间件,任务,服务等)和可扩展性,路由系统快速高效 3.支持处理跨站请求伪造,在进行form表单...env环境文件,方便了系统配置和不同平台开发 ==Lavarel缺点==: 1.基于组件式框架,所以比较臃肿 ==CodeIgniter简单介绍==:CodeIgniter 是一套小巧但功能强大...2.配置简单,全部配置使用PHP脚本来配置,执行效率高; 3.具有基本路由功能,能够进行一定程度路由; 4.具有初步Layout功能,能够制作一定程度界面外观; 5.数据库层封装不错,...答: 1. get是从服务上获取数据,post是向服务传送数据。 2. get是把参数数据队列加到提交表单ACTION属性所指URL,值和表单内各个字段一一对应,在URL可以看到。

1.9K20

国产开源极致微前端框架,成本低,速度快,原生隔离,功能强

市面上表单不一样特点有: 1.一套表单三种模式一起设计 2.生成一套代码同时适应PC,ipad,手机端预览。 3.支持在线编辑vue代码逻辑,不与可视化设计生成vue代码进行冲突。...我Mybatis语法引擎能够动态解析Json实体,获取其属性值进行拼装SQL,那我将Mybatis语法配置提取到前端网页,保存到数据库,设置好两者约定好提交json实体结构, 然后封装一个通用Api...5.迁移重复非常方便,因为整个配置只有一张表,只要将一条数据迁移过去,功能就迁移过去了,数据库藕合性低。...扩展思维 1.系统之间接口对接,接口返回json格式是固定如何将接口数据对接我们系统,结合定时任务配置是可以完美解决,各种系统数据对接和输出,实现万能对接接口 2.MQ队列,MQ队列接收也是实体...路由支持表单数据为条件控制流程走向,业务数据会自动保存,也可以每个节点进行设置回调Api和执行动态Mybatis语法接口,表单设计如下: 流程发起PC端 流程信息 图片 审批记录 图片 流程走向

1.8K20

Django 学习笔记之表单

举个栗子,用户使用浏览访问一个页面,在页面的搜索框输入图书名称,想获取所有销售该图书商店。Web 站点需要获取图书名称信息作为数据库查询条件,所以将数据拦截并获取图书名称。...然后通关查询数据库,最后将查询到所有商店信息返回给浏览进行渲染显示。另外,博客系统评论模块也是这个原理。因此,在一些站点上会爆出 XSS 漏洞。...原因可能是编码者没有对用户提交数据进行过滤或者过滤不严,直接存储到数据库。 2 HTML 表单 这部分是给不熟悉 HTML 表单同学准备,如果你已经掌握这部分知识。可以选择直接跳过。...方法二:自定义 Form 自定义表单比较高级用法,有时候通过 Model 自动创建 Form 无法满足自己需求。...譬如:Model 某些属性我不需要显示在页面上,或数据处理方式比较复杂,这个时候你就需要自定义 Form。自定义 Form 是直接继承 Form。

2.5K30

在 Laravel 控制进行表单请求字段验证

在 Web 应用,用户提交数据往往是不可预测,因此一个非常常见需求是对用户提交表单请求进行验证,以确保用户输入是我们所期望数据格式。...作为一个灵活框架,Laravel 提供了多种方式对表单请求进行验证,你可以在控制通过 $this->validate() 方法验证用户请求,也可以通过单独表单验证类定义验证规则,再将其注入到相应控制方法...在表单页面显示错误信息 我们需要修改下 form.blade.php 表单代码,在 Blade 模板可以通过 $errors 获取验证错误信息,通过 old() 辅助函数可以获取用户上次输入数据:...,提交数据验证失败情况下,就可以回显用户上次输入数据验证错误信息了: ?...对于大量请求字段,或者复杂请求验证,都写到控制方法显然会导致控制代码变得臃肿,可维护性也比较差,所以我们下一篇教程将讨论如何将验证代码移出控制这一话题,并且根据项目需求灵活实现自定义验证规则

5.7K10

【Web开发】Flask框架基础知识

在Flask,为了处理web表单,我们一般使用Flask-WTF扩展,它封装了WTForms,并且它有验证表单数据功能 以最常见登录验证为例,这里以普通实现方式和WTF表单方式实现进行比较。...app.run() 代码说明: 后端使用request.form.get来获取前端表单数据 验证主要来验证两次登录输入密码是否一致 提示信息使用flash来进行映射,前端使用get_flashed_messages...FormField 把表单作为字段嵌入另—个表单 FieldList —组指定类型字段 WTForms常用验证函数: 验证函数 说明 DataRequired 确保字段中有数据 EqualTo 比较两个字段值...,常用于比较两次密码输入 Length 验证输入字符串长度 NumberRange 验证输入值在数字范围内 URL 验证URL AnyOf 验证输入值在可选列表 NoneOf 验证输入值不在可选列表...数据库 在flask,可以利用SQLAlchemy来进行数据库操作。

2K20

Django学习-第十三讲(下):表单(一)forms.form、forms.modelform

1. html表单和django表单区别 HTML表单: 单纯从前端html来说,表单是用来提交数据给服务,不管后台服务器用是Django还是PHP语言还是其他语言。...2.2 django 表单常用验证验证某个字段时候,可以传递一个validators参数用来指定验证,进一步对数据进行过滤。...2.3. django 表单自定义验证 有时候对一个字段验证,不是一个长度,一个正则表达式能够写清楚,还需要一些其他复杂逻辑,那么我们可以对某个字段,进行自定义验证。...比如在注册表单验证,我们想要验证手机号码是否已经被注册过了,那么这时候就需要在数据库进行判断才知道。...比如表单验证字段没有包含模型中所有的字段,这时候就可以先创建对象,再根据填充其他字段,把所有字段值都补充完成后,再保存到数据库

3.1K40

【分享】 纯 js 表单控件 —— 让 “增改查” 更轻松!

3、 可以获取用户输入数据,可以进行验证 4、 可以进行排版 5、 修改数据时,可以把原有数据绑定到表单。...3、 第三方脚本实现复杂功能,比如选择日期、在线编辑、数据验证等。 4、 Js脚本根据json描述,创建表单(table形式),创建表单里面的控件(比如文本框),然后对表单和控件进行修饰。...5、 提取用户输入数据,然后进行验证。然后可以用ajax方式提交给服务。(提交部分表单控件不负责)。 思路: 1、 对表单进行归纳总结,抽象出来几种情况。...re) { return; } //获取用户输入信息,json格式,然后可以ajax提交到数据库...选择日期,很好很强大 3、 kindereditor。选择他是因为可以直接在页面里使用。因为是纯js表单控件,所以服务控件形式在线编辑是不好用了。 4、 数据验证

3.4K81

Django使用普通表单、Form、以及modelForm操作数据库方式总结

Django使用普通表单、Form、以及modelForm操作数据库主要应用于增删该查情景下,流程通用如下,只是实现方式不一样: 进入填写表单页面; 在表单页面填写信息,并提交...; 表单数据验证 验证成功,和数据库进行交互(增删改查); 验证成功,页面提示表单填写失败; 一、Django使用普通表单操作数据库 1、html代码: <form...,前端数据保存在form.cleaned_data,modelcreate函数保存到数据库       obj = models.Article.objects.create(**form.cleaned_data...> 具体Form在前端展示以及校验方式、以及操作model方式(增删改查)不展开,此处主要说明方式 三、Django使用插件modelForm表单操作数据库 和方法二使用表单...Form相比,modelForm具有Form中所有的验证钩子,使用djangomodelForm表单不需要重新定义Form,比较方便。

2.6K30

前端HTML5面试官和应试者一问一答

image 1.HTML5表单增加输入类型 url类型:专门为输入url地址定义文本库,在验证输入文本格式时,如果文本框内容不符合url地址格式,会提示验证错误。...email类型:专门是为输入email地址定义文本框,在验证输入文本格式时,如果文本框内容不符合email地址格式,会提示验证错误。...,是浏览本地RDBMS关系型数据库管理系统,可以使用SQL查询。...html5增加表单类型email等,都包含一个原始类型验证,如果用户输入内容表单类型不符合,typeMismatch属性将返回true,否则反之。...h. customError属性,使用自定义验证错误提示信息,在有些情况下不适合使用浏览内置验证错误提示信息,需要自定义,当输入值不符合语义规则,页面会提示自定义错误信息。

2K50

laravel框架学习记录之表单操作详解

分享给大家供大家参考,具体如下: 1、MVC数据流动 拿到一个laravel项目最基本是弄清楚它页面请求、数据流动是怎样进行,比如当通过get请求index页面时,如何显示如下学生信息列表: ?...laravel提供了validate方法来用于验证用户提交表单是否符合要求,例如在页面通过post提交了学生表单form后,在controller对其先进行验证,如果正确则存入数据库,否则返回到上一页面并抛出一个异常...$stu=$request- input('Student'); Student::create($stu); validate()第一个数组定义字段验证规则,其中Student.name是在提交表单定义...validate()第二个数组自定义验证出错后提示信息,”:attribute”为占位符 validate()第三个数组自定义每个字段提示名字 在页面中报错如下: ?...:《Laravel框架入门进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家基于

12.6K30
领券