我在上一篇文章中講到使用javascript做集成表單驗證的方法,對于客戶端驗證已經足夠,但好的表單驗證應同時在客戶端和服務器端進行——這正是寫本文的目的。
如果采用一般的驗證方法應該怎樣寫呢?
if ($_post['some'] 不滿足 condition) {
die("wrong");
}
類似于javascript的集成驗證方法,在php中也可利用數組和eval語句實現表單驗證(服務器端)框架。一般步驟:
1、將用戶提交的數據從$_get或$_post數組收集到自定義數組(可選),
2、填充驗證數組(包括變量名、條件及提示等),
3、添加固定的驗證代碼。
下面我來舉例說明,假設你要從網頁中收集用戶姓名及年齡,并且在服務器端實現數據驗證,那么你可能需要form.html和act.php。form.html中包含表單:
<form method=post action=act.php>
姓名:<input type=text name='name'><br>
年齡:<inupt type=text name='uage' ><br>
<input type=submit value="提交">
</form>
act.php中將實現表單的驗證:
$userinfo = array(); // 步驟1
$userinfo['name'] = isset($_post['uname']) ? $_post['uname'] : '';
$userinfo['age'] = isset($_post['uage']) ? (int)$_post['uage'] : 0;
$error_message = ""; // 錯誤信息
// 步驟2
$elems = array(
array("/$userinfo['name']", 'strlen(#)<1', '姓名不能為空!'),
// 若省略步驟1則按如下方式改寫:
// array("/$_post['uname']", 'strlen(#)<1', '姓名不能為空!'),
array("/$userinfo['age']", '#<=0', '年齡不正確!')
);
// 步驟3
for($i = 0; $i < count($elems); $i++) {
if(eval("if(".preg_replace("/[#]/", $elems[$i][0], $elems[$i][1]).") return false;") === false) {
$error_message .= $elems[$i][2];
}
}
這樣,我們每次只須填充驗證數組$elems就可完成表單驗證。
希望對你們有用,我也很想知道你們是怎么做的。
這樣,我們每次只須填充驗證數組$elems就可完成表單驗證。
希望對你們有用,我也很想知道你們是怎么做的。
這樣,我們每次只須填充驗證數組$elems就可完成表單驗證。
希望對你們有用,我也很想知道你們是怎么做的。
新聞熱點
疑難解答