
- 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。 |