表单验证(Form Validation)
在构建Web应用程序时,验证是一个重要的过程。 它确保我们获得的数据适当且有效存储或处理。 CodeIgniter使这项任务变得非常简单。 让我们用一个简单的例子来理解这个过程。
例子 (Example)
创建一个视图文件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来执行此示例。 此网址可能因您的网站而异。
http://yoursite.com/index.php/validation
它将产生以下屏幕 -
我们在控制器中添加了一个验证 - 在提交表单之前, Name是必填字段。 因此,如果单击提交按钮而不在名称字段中输入任何内容,则会在提交之前要求您输入名称,如下面的屏幕所示。
成功输入名称后,您将被重定向到屏幕,如下所示。
在上面的示例中,我们使用了所需的规则设置。 CodeIgniter中有许多规则,如下所述。
验证规则参考
以下是可供使用的所有本机规则的列表 -
规则 | 参数 | 描述 | 例 |
---|---|---|---|
required | No | 如果表单元素为空,则返回FALSE。 | |
matches | Yes | 如果表单元素与参数中的表单元素不匹配,则返回FALSE。 | matches[form_item] |
regex_match | Yes | 如果表单元素与正则表达式不匹配,则返回FALSE。 | regex_match[/regex/] |
differs | Yes | 如果表单元素与参数中的表单元素没有不同,则返回FALSE。 | differs[form_item] |
is_unique | Yes | 如果表单元素对参数中的表和字段名称不唯一,则返回FALSE。 注 - 此规则要求启用Query Builder才能工作。 | is_unique[table.field] |
min_length | Yes | 如果表单元素短于参数值,则返回FALSE。 | min_length[3] |
max_length | Yes | 如果表单元素长于参数值,则返回FALSE。 | max_length[12] |
exact_length | Yes | 如果表单元素不完全是参数值,则返回FALSE。 | exact_length[8] |
greater_than | Yes | 如果表单元素小于或等于参数值或不是数字,则返回FALSE。 | greater_than[8] |
greater_than_equal_to | Yes | 如果表单元素小于参数值,则返回FALSE,否则返回数字。 | greater_than_equal_to[8] |
less_than | Yes | 如果表单元素大于或等于参数值或不是数字,则返回FALSE。 | less_than[8] |
less_than_equal_to | Yes | 如果表单元素大于参数值,则返回FALSE,否则返回数字。 | less_than_equal_to[8] |
in_list | Yes | 如果表单元素不在预定列表中,则返回FALSE。 | in_list[red,blue,green] |
alpha | No | 如果表单元素包含除字母字符以外的任何内容,则返回FALSE。 | |
alpha_numeric | No | 如果表单元素包含除字母数字字符以外的任何内容,则返回FALSE。 | |
alpha_numeric_spaces | No | 如果表单元素包含除字母数字字符或空格以外的任何内容,则返回FALSE。 修剪后应使用,以避免开始或结束时的空格 | |
alpha_dash | No | 如果表单元素包含除字母数字字符,下划线或短划线之外的任何内容,则返回FALSE。 | |
numeric | No | 如果表单元素包含除数字字符以外的任何内容,则返回FALSE。 | |
integer | No | 如果表单元素包含除整数之外的任何内容,则返回FALSE。 | |
decimal | No | 如果表单元素包含除十进制数之外的任何内容,则返回FALSE。 | |
is_natural | No | 如果表单元素包含除自然数之外的任何内容 - 0,1,2,3等,则返回FALSE。 | |
is_natural_no_zero | No | 如果表单元素包含除自然数之外的任何内容,但不包含零 - 1,2,3等,则返回FALSE。 | |
valid_url | No | 如果表单元素不包含有效的URL,则返回FALSE。 | |
valid_email | No | 如果表单元素不包含有效的电子邮件地址,则返回FALSE。 | |
valid_emails | No | 如果以逗号分隔的列表中提供的任何值不是有效的电子邮件,则返回FALSE。 | |
valid_ip | No | 如果提供的IP无效,则返回FALSE。 接受可选参数'ipv4'或'ipv6'以指定IP格式。 | |
valid_base64 | No | 如果提供的字符串包含除有效Base64字符以外的任何内容,则返回FALSE。 |