我在上一篇文章中講到使用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就可完成表單驗證。
希望對你們有用,我也很想知道你們是怎麼做的。