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