codeigniter 表單驗證
驗證是構建 web 應用程序的一個重要過程。它確保我們獲得的數據是正確和有效的,可以存儲或處理。 codeigniter 使這項任務變得非常容易。讓我們通過一個簡單的例子來理解這個過程。
示例
創建一個視圖文件 myform.php 并將下面的代碼保存在 application/views/myform.php 中。此頁面將顯示用戶可以提交姓名的表單,我們將驗證此頁面以確保提交時它不應為空。
my form echo validation_errors(); echo form_open('form'); name
創建視圖文件 formsuccess.php 并將其保存在 application/views/formsuccess.php 中。如果表單驗證成功,將顯示此頁面。
my formyour form was successfully submitted!
echo anchor('form', 'try it again!');
創建控制器文件 form.php 并將其保存在 application/controller/form.php 中。如果此表單未正確驗證或重定向到 formsuccess.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 中有許多可用的規則,如下所述。
驗證規則參考
以下是所有可用的原生規則列表:
下面給出了最常用的可用原生規則列表。規則 | parameters | 說明 | 示例 |
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_equal_to |
yes | 如果表單元素小于或等于參數值或不是數字,則返回 false。 | greater_than_equal_to[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 | 如果表單元素包含除整數以外的任何內容,則返回 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。 |