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() { 
        /* 加载表单助手 */
        $this->load->helper(array('form'));
        
        /* 加载表单验证库 */
        $this->load->library('form_validation');
        
        /* 设置表单中名称字段的验证规则 */
        $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

它将产生以下屏幕 −

Validation Form

我们在控制器中添加了一个验证 − 在提交表单之前,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。应在 trim 之后使用,以避免开头或结尾出现空格

alpha_dash

No 如果表单元素包含除字母数字字符、下划线或破折号以外的任何内容,则返回 FALSE。

numeric

No 如果表单元素包含除数字字符以外的任何内容,则返回 FALSE。

integer

No 如果表单元素包含除整数。

decimal

No 如果表单元素包含除十进制数以外的任何内容,则返回 FALSE。

is_natural

No 如果表单元素包含除自然数 0、1、2、3 等以外的任何值,则返回 FALSE。

is_natural_no_zero

No 如果表单元素包含除自然数以外的任何值,但不包含零,则返回 FALSE。 1、2、3 等。

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。