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';
让我们通过访问浏览器中的以下网址来执行此示例。此网址可能因您的网站而异。
http://yoursite.com/index.php/validation
它将产生以下内容。
在提交表单之前,我们已经在控制器name必填字段中添加了验证。因此,如果您在name字段中没有输入任何内容的情况下单击提交按钮,那么您将被要求在提交之前输入名称,如下图所示。
成功输入name后,您将被重定向到如下所示的屏幕。
在上面的示例中,我们使用了所需的规则设置。CodeIgniter中有许多可用的规则,如下所述。
下面是常用的校验规则列表
required:必填项
matches:如果表单元素与参数中的元素不匹配,则返回FALSE
regex_match:如果表单元素与正则表达式不匹配,则返回FALSE。
differs:如果表单元素与参数中的表单元素没有不同,则返回FALSE。
is_unique:如果表单元素对于参数中的表和字段名称不是唯一的,则返回FALSE。注意-此规则要求启用查询生成器才能工作。
min_length:如果表单元素短于参数值,则返回FALSE。
max_length:如果表单元素比参数值长,则返回FALSE。
exact_length:如果表单元素不完全是参数值,则返回FALSE。
greater_than:如果表单元素小于或等于参数值或者不是数值,则返回FALSE。
greater_than_equal_to:如果表单元素小于参数值,或者不是数值,则返回FALSE。
less_than:如果表单元素大于或等于参数值或者不是数值,则返回FALSE。
less_than_equal_to:如果表单元素大于参数值,或者不是数值,则返回FALSE。
in_list: 如果表单元素不在列表中,则返回FALSE。
alpha:如果表单元素包含字母字符以外的任何内容,则返回FALSE。
alpha_numeric:如果表单元素包含字母数字字符以外的任何内容,则返回FALSE。
alpha_numeric_spaces:如果表单元素包含字母数字字符或空格以外的任何内容,则返回FALSE。应在修剪后使用,以避免开头或结尾出现空格。
alpha_dash:如果表单元素包含字母数字字符、下划线或破折号以外的任何内容,则返回FALSE。
numeric:如果表单元素包含数字字符以外的任何内容,则返回FALSE。
integer:如果表单元素包含整数以外的任何内容,则返回FALSE。
decimal:如果表单元素包含除十进制数以外的任何内容,则返回FALSE。
is_natural:如果表单元素包含除自然数0、1、2、3等以外的任何内容,则返回FALSE。
valid_url:如果表单元素不包含有效的网址,则返回FALSE。
如果表单元素不包含有效的网址,则返回FALSE。
valid_email:如果表单元素不包含有效的电子邮件地址,则返回FALSE。
No 如果表单元素不包含有效的电子邮件地址,则返回FALSE。
valid_emails:如果逗号分隔列表中提供的任何值不是有效的电子邮件,则返回FALSE。
valid_ip:如果提供的IP无效,则返回FALSE。接受可选参数“ipv4”或“ipv6”来指定IP格式。
valid_base64 :Returns FALSE if the supplied string contains anything other than valid Base64 characters.