您應該在服務器端進行驗證。客戶端驗證是可選的。 您可以聲明字段的驗證類型,併爲您的表單構建通用驗證器。如果您不知道我的意思,請嘗試查看AngularJs聲明性代碼構建。這是構建表單的最佳方式,Angular也是構建表單的好且快速的框架。
http://angularjs.org/
http://docs.angularjs.org/#!/cookbook/advancedform
看這行:
<input type="text" name="form.address.line1" size="33" ng:required/> <br/>
<input type="text" name="form.address.city" size="12" ng:required/>,
<input type="text" name="form.address.state" size="2" ng:required ng:validate="regexp:state"/>
<input type="text" name="form.address.zip" size="5" ng:required
validate="regexp:zip"/>
對於服務器端,你也可以定義一些結構,其中將包含表單域,驗證方法和錯誤字符串每個領域。然後在循環中,根據您的信息結構驗證每個字段。您可以輕鬆管理這種方式構建的表單。
實施例在PHP:
表格數據:
$formData = array (
array(
'ID' => "name",
'validate' => '/.+/',
'label' => 'Your name',
'errorMsg' => "This field is required",
'type' => 'text'
),
array(
'ID' => "Phone number",
'validate' => '/^[0-9+ ]+$/',
'label' => 'Numer telefonu',
'errorMsg' => "Please provide proper telephone number",
'type' => 'text'
)
);
驗證和形式發生器(抱歉簡單和雜亂代碼在這裏):
$s = '';
foreach ($formData as $input){
$s .= sprintf('<label for="%s">%s</label>',$input['ID'],$input['label']);
if (isset($_POST[$input['ID']]) && !empty($input['validate']) && !preg_match($input['validate'],$_POST[$input['ID']])){
$error = true;
$s .= sprintf('<div class="formErrorValidate">%s</div>',$input['errorMsg']);
}
if (isset($_POST[$input['ID']])) $htmlMsg = str_replace('%'.$input['ID'].'%',$_POST[$input['ID']],$htmlMsg);
if ($input['type'] == 'textarea'){
$s .= sprintf('<textarea name="%s" id="%s">%s</textarea>',$input['ID'],$input['ID'],(isset($_POST[$input['ID']])?$_POST[$input['ID']]:''));
} else {
$s .= sprintf('<input type="%s" name="%s" id="%s" value="%s"/>',$input['type'],$input['ID'],$input['ID'],(isset($_POST[$input['ID']])?$_POST[$input['ID']]:''));
}
}
來源
2012-01-08 19:21:03
kaz
讓我wounder你爲了生活做什麼;)我理解你的話,儘管如此,我最好確認我在網站發佈之前驗證了所有內容我現在然後 – Shogun 2012-01-09 21:26:31