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