我需要驗證一個表單。這是一些服務器端驗證,檢查是否填寫了必填字段,電子郵件是有效的,數字和字母數字字段不包含流氓字符。你會如何改進這個表單驗證代碼?
我想就如何提高代碼的可靠性和簡潔性提出一些反饋意見。
<?php
// current state
$valid = true;
// post data collection
$name = "John Doe";
$email = "[email protected]";
$age = "19";
// select data that needs validation
$required = array($name, $email);
$validEmail = array($email);
$validNumber = array($age);
$validAlpha = array($name);
// check required fields
for ($i=0; $i<count($required); $i++) {
if (strlen($required[$i]) == 0) {
echo "Please fill out all required fields";
$valid = false;
break;
}
}
// check for valid email field
for ($i=0; $i<count($validEmail); $i++) {
if (preg_match('/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/', $validEmail[$i])) {
} else {
echo '"' . $validEmail[$i] . '"' . ' is an invalid email address <br />';
$valid = false;
}
}
// check numeric fields
for ($i=0; $i<count($validNumber); $i++) {
if (preg_match('/^[0-9 ]+$/', $validNumber[$i])) {
} else {
echo '"' . $validNumber[$i] . '"' . ' is an invalid number <br />';
$valid = false;
}
}
// check alpha
for ($i=0; $i<count($validAlpha); $i++) {
if (preg_match('/^[a-zA-Z ]+$/', $validAlpha[$i])) {
} else {
echo '"' . $validAlpha[$i] . '"' . ' contains invalid characters. This field only accepts letters. <br />';
$valid = false;
}
}
// return "Your form was successfully sent"
if ($valid) {
echo 'Your form was successfully sent. <br />Back to the site <form><input type="button" value="back" onclick="history.go(-1);return true;"></form>';
}
?>
使用符合標準的電子郵件正則表達式,例如內置'filter_var($ email,FILTER_VALIDATE_EMAIL)'。 – mario