//USAGE: $results .=(Continuous for multiple fields) formcheck($postdata,"Field",length(number),"A or AN, ALL, EMAIL, WEBSITE, etc.","REQUIRE, NA");
//EXAMPLE: $results .= formcheck($postdata,"Name",30,"AN","REQUIRE"); Then check $results for errors. If == "" then process form.
function formcheck($data,$field,$length,$type,$require) {
if ($data == "" && $require == "REQUIRE") {
$error .= "
" . $field . " Cannot be left blank";
return $error;
} elseif ($data == "" && $require =="NA") {
return;
}
if (strlen($data) > $length) $error .= "" . $field . " is too long. Please use " . $length . " characters or less.";
switch($type) {
case "AN": if (!preg_match("/^[a-z0-9 ]+$/i", $data)) $error .= "" . $field . " can only contain letters and numbers and spaces"; break;
case "A": if (!preg_match("/^[a-z]+$/i", $data)) $error .= "" . $field . " can only contain letters and spaces"; break;
case "N": if (!preg_match("/^[0-9]+$/", $data)) $error .= "" . $field . " can only contain numbers"; break;
case "ALL": if(!preg_match("/^[a-z0-9\:\-\_\?\&\;\#\.\"\/\,\'\\\ ]+$/i", $data)) $error .= "" . $field . " contains invalid characters"; break; //htmlspecialchars($data); better to do this for general data
case "DATE": if(preg_match("/^[0-9]{2}-[0-9]{2}-[0-9]{4}$/", $data) === 0) $error .= "" . $field . " must be in the format MM-DD-YYYY"; break;
case "PASS": if(!preg_match("/^.*(?=.{6,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).*$/", $data)) $error .= "" . $field . " must be at least 6 characters with at least one lower case letter, one upper case letter & one digit.";
case "WEBSITE": if (!preg_match("/^[a-z0-9\.\/\-:]+$/i", $data)) $error .= "" . $field . " entered is invalid."; break;
case "EMAIL": if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $data)) $error .= "The " . $field . " address entered is invalid."; break;
}
return $error;
}