數(shù)據(jù)安全是程序開發(fā)中至關(guān)重要一點(diǎn),特別是對商城程序而言,一般對表單數(shù)據(jù)驗(yàn)證都是采用前端JS與后端PHP驗(yàn)證相結(jié)合的方式,ShopNC商城系統(tǒng)在表單數(shù)據(jù)驗(yàn)證上也是如此, ShopNC系統(tǒng)的后臺(tái)PHP驗(yàn)證分為兩部分:控制器層驗(yàn)證和框架底層驗(yàn)證,Validate驗(yàn)證類的作用就是完成在控制器里的驗(yàn)證。
下面是登錄時(shí)的一段使用Validate類驗(yàn)證程序:
- if (chksubmit()){
-
- $obj_validate = new Validate();
-
- $obj_validate->validateparam = array(
-
- array("input"=>$_POST["username"], "require"=>"true", "message"=>"請輸入用戶名"),
-
- array("input"=>$_POST["password"], "require"=>"true", "message"=>"請輸入密碼"),
-
- array("input"=>$_POST["captcha"], "require"=>(C('captcha_status_login') ? "true" : "false"), "message"=>"請輸入驗(yàn)證碼"),
-
- );
-
- $error = $obj_validate->validate();
-
- if ($error != ''){
-
- showValidateError($error);
-
- }else {
-
- /**
-
- * 程序繼續(xù)向下執(zhí)行
-
- */
-
- }
-
- }
復(fù)制代碼代碼分析:
首先由chksubmit函數(shù)判斷表單提交是否合法,令牌是否正確,判斷通過后,使用Validate類進(jìn)行數(shù)據(jù)驗(yàn)證,Validate類的validateparam屬性數(shù)組存放待驗(yàn)證的信息,其中,input為待驗(yàn)證的數(shù)據(jù),require為是否為必填項(xiàng)(true/false),message為如果驗(yàn)證未通過,返回的提示信息。可以看出上例的用戶名和密碼均為必填項(xiàng),驗(yàn)證碼視系統(tǒng)開關(guān)captcha_status_login的值而定。C函數(shù)作用是取得系統(tǒng)配置項(xiàng)。
準(zhǔn)備工作都完后成,開始調(diào)用類的validate方法進(jìn)行驗(yàn)證,如果驗(yàn)證未過通,返回錯(cuò)誤信息,否則返回空。錯(cuò)誤信息的輸出由showValidateError函數(shù)完成,該函數(shù)跟據(jù)是否是異步提交返回不同的提示形式。
除可以驗(yàn)證是否為必填外,Validate類還可以完成一些常用的數(shù)據(jù)類型驗(yàn)證。如驗(yàn)證郵件、電話、網(wǎng)址、貨幣、郵編、QQ、數(shù)字、英文、漢字、兩數(shù)值比較等。如:
- $obj_validate = new Validate();
-
- $obj_validate->validateparam = array(
-
- array("input"=>$_POST["password1"], "require"=>"true", "validator"=>"compare", "operator"=>"==", "to"=>$_POST["password2"], "message"=>"兩次密碼輸入要一致"),
-
- array("input"=>$_POST["input0"], "require"=>"true", "validator"=>"email", "message"=>'郵件驗(yàn)證'),
-
- array("input"=>$_POST["input1"], "require"=>"true", "validator"=>"phone", "message"=>'固話驗(yàn)證'),
-
- array("input"=>$_POST["input2"], "require"=>"true", "validator"=>"mobile", "message"=>'手機(jī)驗(yàn)證'),
-
- array("input"=>$_POST["input3"], "require"=>"true", "validator"=>"url", "message"=>'網(wǎng)址驗(yàn)證'),
-
- array("input"=>$_POST["input4"], "require"=>"true", "validator"=>"currency", "message"=>'價(jià)格驗(yàn)證'),
-
- array("input"=>$_POST["input5"], "require"=>"true", "validator"=>"number", "message"=>'數(shù)字驗(yàn)證'),
-
- array("input"=>$_POST["input6"], "require"=>"true", "validator"=>"zip", "message"=>'郵編驗(yàn)證'),
-
- array("input"=>$_POST["input6"], "require"=>"true", "validator"=>"qq", "message"=>'QQ驗(yàn)證'),
-
- array("input"=>$_POST["input6"], "require"=>"true", "validator"=>"english", "message"=>'英文字母驗(yàn)證'),
-
- array("input"=>$_POST["input6"], "require"=>"true", "validator"=>"chinese", "message"=>'中文驗(yàn)證'),
-
- );
-
- $error = $obj_validate->validate();
復(fù)制代碼
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)。