php ci提交表单验证,ci表单验证代码
概述
這是只考慮php對表單數據的接收處理。至于js部分以前會結合validate來講解下
在解釋 CodeIgniter 的數據驗證處理之前,讓我們先描述一下一般的情況:
一個表單顯示了。
你填寫并提交了它。
如果你提交了一些無效的信息,或者可能漏掉了一個必填項,表單將會連同你的數據和錯誤問題的描述信息重新顯示。
這個過程將繼續,直到你提交了一個有效的表單。
在接收端,腳本必須:
檢查必須的數據。
驗證數據是否為正確的類型,合適的標準。例如,如果一個用戶名被提交,它必須被驗證是否只包含了允許的字符。它必須有一個最小長度,不能超過最大長度。用戶名不能是已存在的他人用戶名,或者甚至是一個保留字等。
清理數據使其安全。
如果需要,預格式化數據(數據需要清除空白嗎?經過 HTML 編碼?等。)
準備數據,插入數據庫。
盡管上面的過程并不是很復雜,但是通常需要編寫很多代碼,而且為了顯示錯誤信息,在網頁中經常要使用多種不同的控制結構。創建表單驗證雖簡單,實施起來卻也枯燥無味。其實不僅僅是枯燥無味,而是很多時候想死的心都有。但是本著不放過任何一條漏網之魚原則,表單驗證很有必要
表單驗證指南
為了進行表單驗證,你需要這三樣東西:
一個包含表單的視圖文件。
一個包含“成功”信息的視圖文件,在成功提交后將被顯示。
一個接收并處理所提交數據的控制器函數。
讓我們以一個會員注冊表單為例來創建這三個玩意。
表單:
使用一個文本編輯器,創建一個名叫 myform.php 的表單。在它里面放上這些代碼并把它保存到你的
applications/views/
文件夾中:
My FormUsername
Password
Password Confirm
Email Address
成功頁面
使用一個文本編輯器,創建一個名叫 formsuccess.php 的表單。在它里面放上這些代碼并保存到你的applications/views/文件夾:
My FormYour form was successfully submitted!
控制器
使用一個文本編輯器,創建一個名叫 form.php 的控制器。在它里面,放上這些代碼并保存到你的
applications/controllers/
文件夾:
class Form extends CI_Controller {
function index()
{
$this->load->helper(array(‘form’, ‘url’));
$this->load->library(‘form_validation’);
if ($this->form_validation->run() == FALSE)
{
$this->load->view(‘myform’);
}
else
{
$this->load->view(‘formsuccess’);
}
}
}
?>
Try it!
要測試你的表單,請使用類似這樣的URL訪問你的網站:
example.com/index.php/form/
如果你提交表單你只會看到表單重新加載了。這是因為你還沒有設置驗證規則。
由于你還沒有告訴表單驗證類驗證什么東西。它只是默認的返回了 FALSE (boolean false) 。
run()
方法只在全部成功匹配了你的規則才會返回 TRUE 。
解析
你會注意到在此頁上面的幾點:
表單 (myform.php) 是一個標準的Web表單,除了以下兩點:
它使用一個 表單輔助函數 創建表單開始。技術上,這并非必要。你可以使用標準的HTML來創建,然而,使用輔助函數的好處是它為你生成了基于你配置文件中的URL的 action URL。這使得你的應用在更改URL時更具移植性。 實際上,我個人更加傾向于自己用標準的html來創建表單
在表單的頂端你將注意到如下函數調用:
<?php echo validation_errors(); ?>
這個函數將會返回驗證器送回的所有錯誤信息。如果沒有錯誤信息,它將返回空字符串。
控制器 (form.php) 有一個方法: index()。這個方法初始化驗證類并加載你視圖中用到的表單輔助函數和URL 輔助函數 它也會
運行基于驗證是否成功,它會重現表單或顯示成功頁面。
驗證程序。
設置驗證規則( 重點來了)
CodeIgniter允許你為單個表單域創建多個驗證規則,按順序層疊在一起,你甚至可以同時預先處理表單域數據。要設置驗證規則請使用set_rules() 函數:
$this->form_validation->set_rules();
上面的函數使用 三個 參數作為輸入:
表單域的名字 – 就是你給表單域取的那個名字。
一個此表單域的 "人性化" 名字,它將被插入到錯誤信息中。例如,如果你有一個表單域叫做“user”你可能給它一個人性化名字叫做“用戶名”。 注意: 如果你想讓表單域的名字保存在一個語言文件里,請參考翻譯表單域名字.
為此表單域設置的驗證規則。
這兒有一個示例。在你的 控制器 (form.php) 中緊接著驗證初始化函數之后,添加這段代碼:
$this->form_validation->set_rules(‘username’, ‘Username’, ‘required’);
$this->form_validation->set_rules(‘password’, ‘Password’, ‘required’);
$this->form_validation->set_rules(‘passconf’, ‘Password Confirmation’, ‘required’);
$this->form_validation->set_rules(‘email’, ‘Email’, ‘required’);
你的控制器現在看起來像這樣:
class Form extends CI_Controller {
function index()
{
$this->load->helper(array(‘form’, ‘url’));
$this->load->library(‘form_validation’);
$this->form_validation->set_rules(‘username’, ‘Username’, ‘required’);
$this->form_validation->set_rules(‘password’, ‘Password’, ‘required’);
$this->form_validation->set_rules(‘passconf’, ‘Password Confirmation’, ‘required’);
$this->form_validation->set_rules(‘email’, ‘Email’, ‘required’);
if ($this->form_validation->run() == FALSE)
{
$this->load->view(‘myform’);
}
else
{
$this->load->view(‘formsuccess’);
}
}
}
?>
現在留空表單域提交表單你會看到錯誤信息。 如果你填充所有的表單域提交表單你會看到成功頁。
注意: 出現錯誤時表單域并沒有被使用數據重新填充。稍后我們去搞這個。
使用一個數組設置驗證規則
$config = array(
array(
‘field’?? => ‘username’,
‘label’?? => ‘Username’,
‘rules’?? => ‘required’
),
array(
‘field’?? => ‘password’,
‘label’?? => ‘Password’,
‘rules’?? => ‘required’
),
array(
‘field’?? => ‘passconf’,
‘label’?? => ‘Password Confirmation’,
‘rules’?? => ‘required’
),
array(
‘field’?? => ‘email’,
‘label’?? => ‘Email’,
‘rules’?? => ‘required’
)
);
$this->form_validation->set_rules($config);
級聯規則(Cascading Rules)
CodeIgniter 允許你將多個規則連接在一起。讓我們試一試。修改規則設置函數中的第三個參數,如下:
$this->form_validation->set_rules(‘username’, ‘Username’, ‘required|min_length[5]|max_length[12]|is_unique[users.username]‘);
$this->form_validation->set_rules(‘password’, ‘Password’, ‘required|matches[passconf]‘);
$this->form_validation->set_rules(‘passconf’, ‘Password Confirmation’, ‘required’);
$this->form_validation->set_rules(‘email’, ‘Email’, ‘required|valid_email|is_unique[users.email]‘);
上面的代碼設置了一組規則:
用戶名表單域長度不得小于5個字符以及大于12個字符。
密碼表單域必須跟密碼確認表單域的數據一致。
電子郵件表單域必須是一個有效郵件地址。
這里特別要注意一下,這個在初次訪問這個函數的時候。并不會調用那些出錯信息。只有在提交后,才可能看到
總結
以上是生活随笔為你收集整理的php ci提交表单验证,ci表单验证代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关闭oracle自动统计,禁用Oracl
- 下一篇: redhat php5 安装,完整的li