- CodeIgniter 教程
- CodeIgniter - 首页
- CodeIgniter - 概述
- CodeIgniter - 安装 CodeIgniter
- CodeIgniter - 应用架构
- CodeIgniter - MVC 框架
- CodeIgniter - 基本概念
- CodeIgniter - 配置
- CodeIgniter - 数据库操作
- CodeIgniter - 库
- CodeIgniter - 错误处理
- CodeIgniter - 文件上传
- CodeIgniter - 发送邮件
- CodeIgniter - 表单验证
- CodeIgniter - 会话管理
- CodeIgniter - Flashdata
- CodeIgniter - Tempdata
- CodeIgniter - Cookie 管理
- CodeIgniter - 常用函数
- CodeIgniter - 页面缓存
- CodeIgniter - 页面重定向
- CodeIgniter - 应用性能分析
- CodeIgniter - 基准测试
- CodeIgniter - 添加 JS 和 CSS
- CodeIgniter - 国际化
- CodeIgniter - 安全性
- CodeIgniter 有用资源
- CodeIgniter - 快速指南
- CodeIgniter - 有用资源
- CodeIgniter - 讨论
CodeIgniter - 表单验证
在构建 web 应用时,验证是一个重要的过程。它确保我们获取的数据是正确且有效的,可以存储或处理。CodeIgniter 使这项任务变得非常容易。让我们通过一个简单的例子来了解这个过程。
示例
创建一个视图文件 **myform.php** 并将下面的代码保存到 **application/views/myform.php** 中。此页面将显示一个表单,用户可以在其中提交姓名,我们将验证此表单以确保提交时姓名不为空。
<html> <head> <title>My Form</title> </head> <body> <form action = "" method = ""> <?php echo validation_errors(); ?> <?php echo form_open('form'); ?> <h5>Name</h5> <input type = "text" name = "name" value = "" size = "50" /> <div><input type = "submit" value = "Submit" /></div> </form> </body> </html>
创建一个视图文件 **formsuccess.php** 并将其保存到 **application/views/formsuccess.php** 中。如果表单验证成功,则将显示此页面。
<html> <head> <title>My Form</title> </head> <body> <h3>Your form was successfully submitted!</h3> <p><?php echo anchor('form', 'Try it again!'); ?></p> </body> </html>
创建一个控制器文件 **Form.php** 并将其保存到 **application/controller/Form.php** 中。此表单将显示错误(如果验证不正确)或重定向到 **formsuccess.php** 页面。
<?php class Form extends CI_Controller { public function index() { /* Load form helper */ $this->load->helper(array('form')); /* Load form validation library */ $this->load->library('form_validation'); /* Set validation rule for name field in the form */ $this->form_validation->set_rules('name', 'Name', 'required'); if ($this->form_validation->run() == FALSE) { $this->load->view('myform'); } else { $this->load->view('formsuccess'); } } } ?>
在 **application/config/routes.php** 中添加以下行。
$route['validation'] = 'Form';
让我们通过在浏览器中访问以下 URL 来执行此示例。此 URL 可能因您的站点而异。
http://yoursite.com/index.php/validation
它将产生以下屏幕:
我们在控制器中添加了一个验证:提交表单前 **姓名** 是必填字段。因此,如果您在不输入任何姓名的情况下点击提交按钮,则系统会要求您在提交前输入姓名,如下面的屏幕所示。
成功输入姓名后,您将被重定向到如下所示的屏幕。
在上面的示例中,我们使用了 `required` 规则设置。CodeIgniter 中还有许多其他规则可用,如下所述。
验证规则参考
以下是所有可用的原生规则列表:
规则 | 参数 | 描述 | 示例 |
---|---|---|---|
required |
否 | 如果表单元素为空,则返回 FALSE。 | |
matches |
是 | 如果表单元素与参数中的元素不匹配,则返回 FALSE。 | matches[form_item] |
regex_match |
是 | 如果表单元素与正则表达式不匹配,则返回 FALSE。 | regex_match[/regex/] |
differs |
是 | 如果表单元素与参数中的元素不不同,则返回 FALSE。 | differs[form_item] |
is_unique |
是 | 如果表单元素对表和参数中的字段名称不唯一,则返回 FALSE。注意:此规则需要启用 *查询构建器* 才能工作。 | is_unique[table.field] |
min_length |
是 | 如果表单元素短于参数值,则返回 FALSE。 | min_length[3] |
max_length |
是 | 如果表单元素长于参数值,则返回 FALSE。 | max_length[12] |
exact_length |
是 | 如果表单元素不完全等于参数值,则返回 FALSE。 | exact_length[8] |
greater_than |
是 | 如果表单元素小于或等于参数值或不是数字,则返回 FALSE。 | greater_than[8] |
greater_than_equal_to |
是 | 如果表单元素小于参数值或不是数字,则返回 FALSE。 | greater_than_equal_to[8] |
less_than |
是 | 如果表单元素大于或等于参数值或不是数字,则返回 FALSE。 | less_than[8] |
less_than_equal_to |
是 | 如果表单元素大于参数值或不是数字,则返回 FALSE。 | less_than_equal_to[8] |
in_list |
是 | 如果表单元素不在预定列表中,则返回 FALSE。 | in_list[red,blue,green] |
alpha |
否 | 如果表单元素包含字母字符以外的任何内容,则返回 FALSE。 | |
alpha_numeric |
否 | 如果表单元素包含字母数字字符以外的任何内容,则返回 FALSE。 | |
alpha_numeric_spaces |
否 | 如果表单元素包含字母数字字符或空格以外的任何内容,则返回 FALSE。应在 trim 后使用,以避免开头或结尾的空格 | |
alpha_dash |
否 | 如果表单元素包含字母数字字符、下划线或破折号以外的任何内容,则返回 FALSE。 | |
numeric |
否 | 如果表单元素包含数字字符以外的任何内容,则返回 FALSE。 | |
integer |
否 | 如果表单元素包含整数以外的任何内容,则返回 FALSE。 | |
decimal |
否 | 如果表单元素包含十进制数以外的任何内容,则返回 FALSE。 | |
is_natural |
否 | 如果表单元素包含自然数以外的任何内容(0、1、2、3 等),则返回 FALSE。 | |
is_natural_no_zero |
否 | 如果表单元素包含自然数以外的任何内容,但不包含零(1、2、3 等),则返回 FALSE。 | |
valid_url |
否 | 如果表单元素不包含有效的 URL,则返回 FALSE。 | |
valid_email |
否 | 如果表单元素不包含有效的电子邮件地址,则返回 FALSE。 | |
valid_emails |
否 | 如果逗号分隔列表中提供的任何值不是有效的电子邮件,则返回 FALSE。 | |
valid_ip |
否 | 如果提供的 IP 无效,则返回 FALSE。接受可选参数“ipv4”或“ipv6”以指定 IP 格式。 | |
valid_base64 |
否 | 如果提供的字符串包含有效 Base64 字符以外的任何内容,则返回 FALSE。 |