<? /*-- TODO ---------------------------// Writeup how to use the VALIDATE class, add in support for form id checks Complete the number and date validation Finish the GenerateJS stuff //-----------------------------------*/ class VALIDATE { var $Fields = array(); function SetFields($FieldName, $Required, $FieldType, $ErrorMessage, $Options = array()) { $this->Fields[$FieldName]['Type'] = strtolower($FieldType); $this->Fields[$FieldName]['Required'] = $Required; $this->Fields[$FieldName]['ErrorMessage'] = $ErrorMessage; if (!empty($Options['maxlength'])) { $this->Fields[$FieldName]['MaxLength'] = $Options['maxlength']; } if (!empty($Options['minlength'])) { $this->Fields[$FieldName]['MinLength'] = $Options['minlength']; } if (!empty($Options['comparefield'])) { $this->Fields[$FieldName]['CompareField'] = $Options['comparefield']; } if (!empty($Options['allowperiod'])) { $this->Fields[$FieldName]['AllowPeriod'] = $Options['allowperiod']; } if (!empty($Options['allowcomma'])) { $this->Fields[$FieldName]['AllowComma'] = $Options['allowcomma']; } if (!empty($Options['inarray'])) { $this->Fields[$FieldName]['InArray'] = $Options['inarray']; } if (!empty($Options['regex'])) { $this->Fields[$FieldName]['Regex'] = $Options['regex']; } } function ValidateForm($ValidateArray) { reset($this->Fields); foreach ($this->Fields as $FieldKey => $Field) { $ValidateVar = $ValidateArray[$FieldKey]; if ($ValidateVar != '' || !empty($Field['Required']) || $Field['Type'] == 'date') { if ($Field['Type'] == 'string') { if (isset($Field['MaxLength'])) { $MaxLength = $Field['MaxLength']; } else { $MaxLength = 255; } if (isset($Field['MinLength'])) { $MinLength = $Field['MinLength']; } else { $MinLength = 1; } if (strlen($ValidateVar) > $MaxLength) { return $Field['ErrorMessage']; } elseif (strlen($ValidateVar) < $MinLength) { return $Field['ErrorMessage']; } } elseif ($Field['Type'] == 'number') { if (isset($Field['MaxLength'])) { $MaxLength = $Field['MaxLength']; } else { $MaxLength = ''; } if (isset($Field['MinLength'])) { $MinLength = $Field['MinLength']; } else { $MinLength = 0; } $Match = '0-9'; if (isset($Field['AllowPeriod'])) { $Match .= '.'; } if (isset($Field['AllowComma'])) { $Match .= ','; } if (preg_match('/[^'.$Match.']/', $ValidateVar) || strlen($ValidateVar) < 1) { return $Field['ErrorMessage']; } elseif ($MaxLength != '' && $ValidateVar > $MaxLength) { return $Field['ErrorMessage'].'!!'; } elseif ($ValidateVar < $MinLength) { return $Field['ErrorMessage']."$MinLength"; } } elseif ($Field['Type'] == 'email') { if (isset($Field['MaxLength'])) { $MaxLength = $Field['MaxLength']; } else { $MaxLength = 255; } if (isset($Field['MinLength'])) { $MinLength = $Field['MinLength']; } else { $MinLength = 6; } if (!preg_match("/^".EMAIL_REGEX."$/i", $ValidateVar)) { return $Field['ErrorMessage']; } elseif (strlen($ValidateVar) > $MaxLength) { return $Field['ErrorMessage']; } elseif (strlen($ValidateVar) < $MinLength) { return $Field['ErrorMessage']; } } elseif ($Field['Type'] == 'link') { if (isset($Field['MaxLength'])) { $MaxLength = $Field['MaxLength']; } else { $MaxLength = 255; } if (isset($Field['MinLength'])) { $MinLength = $Field['MinLength']; } else { $MinLength = 10; } if (!preg_match('/^'.URL_REGEX.'$/i', $ValidateVar)) { return $Field['ErrorMessage']; } elseif (strlen($ValidateVar) > $MaxLength) { return $Field['ErrorMessage']; } elseif (strlen($ValidateVar) < $MinLength) { return $Field['ErrorMessage']; } } elseif ($Field['Type'] == 'username') { if (isset($Field['MaxLength'])) { $MaxLength = $Field['MaxLength']; } else { $MaxLength = 20; } if (isset($Field['MinLength'])) { $MinLength = $Field['MinLength']; } else { $MinLength = 1; } if (!preg_match(USERNAME_REGEX, $ValidateVar)) { return $Field['ErrorMessage']; } elseif (strlen($ValidateVar) > $MaxLength) { return $Field['ErrorMessage']; } elseif (strlen($ValidateVar) < $MinLength) { return $Field['ErrorMessage']; } } elseif ($Field['Type'] == 'checkbox') { if (!isset($ValidateArray[$FieldKey])) { return $Field['ErrorMessage']; } } elseif ($Field['Type'] == 'compare') { if ($ValidateArray[$Field['CompareField']] != $ValidateVar) { return $Field['ErrorMessage']; } } elseif ($Field['Type'] == 'inarray') { if (array_search($ValidateVar, $Field['InArray']) === false) { return $Field['ErrorMessage']; } } elseif ($Field['Type'] == 'regex') { if (!preg_match($Field['Regex'], $ValidateVar)) { return $Field['ErrorMessage']; } } } } // while } // function function GenerateJS($FormID) { $ReturnJS = "<script type=\"text/javascript\" language=\"javascript\">\r\n"; $ReturnJS .= "//<![CDATA[\r\n"; $ReturnJS .= "function formVal() {\r\n"; $ReturnJS .= " clearErrors('$FormID');\r\n"; reset($this->Fields); foreach ($this->Fields as $FieldKey => $Field) { if ($Field['Type'] == 'string') { $ValItem = ' if ($(\'#'.$FieldKey.'\').raw().value == ""'; if (!empty($Field['MaxLength'])) { $ValItem .= ' || $(\'#'.$FieldKey.'\').raw().value.length > '.$Field['MaxLength']; } else { $ValItem .= ' || $(\'#'.$FieldKey.'\').raw().value.length > 255'; } if (!empty($Field['MinLength'])) { $ValItem .= ' || $(\'#'.$FieldKey.'\').raw().value.length < '.$Field['MinLength']; } $ValItem .= ') { return showError(\''.$FieldKey.'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n"; } elseif ($Field['Type'] == 'number') { $Match = '0-9'; if (!empty($Field['AllowPeriod'])) { $Match .= '.'; } if (!empty($Field['AllowComma'])) { $Match .= ','; } $ValItem = ' if ($(\'#'.$FieldKey.'\').raw().value.match(/[^'.$Match.']/) || $(\'#'.$FieldKey.'\').raw().value.length < 1'; if (!empty($Field['MaxLength'])) { $ValItem .= ' || $(\'#'.$FieldKey.'\').raw().value/1 > '.$Field['MaxLength']; } if (!empty($Field['MinLength'])) { $ValItem .= ' || $(\'#'.$FieldKey.'\').raw().value/1 < '.$Field['MinLength']; } $ValItem .= ') { return showError(\''.$FieldKey.'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n"; } elseif ($Field['Type'] == 'email') { $ValItem = ' if (!validEmail($(\'#'.$FieldKey.'\').raw().value)'; if (!empty($Field['MaxLength'])) { $ValItem .= ' || $(\'#'.$FieldKey.'\').raw().value.length > '.$Field['MaxLength']; } else { $ValItem .= ' || $(\'#'.$FieldKey.'\').raw().value.length > 255'; } if (!empty($Field['MinLength'])) { $ValItem .= ' || $(\'#'.$FieldKey.'\').raw().value.length < '.$Field['MinLength']; } else { $ValItem .= ' || $(\'#'.$FieldKey.'\').raw().value.length < 6'; } $ValItem .= ') { return showError(\''.$FieldKey.'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n"; } elseif ($Field['Type'] == 'link') { $ValItem = ' if (!validLink($(\'#'.$FieldKey.'\').raw().value)'; if (!empty($Field['MaxLength'])) { $ValItem .= ' || $(\'#'.$FieldKey.'\').raw().value.length > '.$Field['MaxLength']; } else { $ValItem .= ' || $(\'#'.$FieldKey.'\').raw().value.length > 255'; } if (!empty($Field['MinLength'])) { $ValItem .= ' || $(\'#'.$FieldKey.'\').raw().value.length < '.$Field['MinLength']; } else { $ValItem .= ' || $(\'#'.$FieldKey.'\').raw().value.length < 10'; } $ValItem .= ') { return showError(\''.$FieldKey.'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n"; } elseif ($Field['Type'] == 'username') { $ValItem = ' if ($(\'#'.$FieldKey.'\').raw().value.match(/[^a-zA-Z0-9_\-]/)'; if (!empty($Field['MaxLength'])) { $ValItem .= ' || $(\'#'.$FieldKey.'\').raw().value.length > '.$Field['MaxLength']; } if (!empty($Field['MinLength'])) { $ValItem .= ' || $(\'#'.$FieldKey.'\').raw().value.length < '.$Field['MinLength']; } $ValItem .= ') { return showError(\''.$FieldKey.'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n"; } elseif ($Field['Type'] == 'regex') { $ValItem = ' if (!$(\'#'.$FieldKey.'\').raw().value.match('.$Field['Regex'].')) { return showError(\''.$FieldKey.'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n"; } elseif ($Field['Type'] == 'date') { $DisplayError = $FieldKey.'month'; if (isset($Field['MinLength']) && $Field['MinLength'] == 3) { $Day = '$(\'#'.$FieldKey.'day\').raw().value'; $DisplayError .= ",{$FieldKey}day"; } else { $Day = '1'; } $DisplayError .= ",{$FieldKey}year"; $ValItemHold = ' if (!validDate($(\'#'.$FieldKey.'month\').raw().value+\'/\'+'.$Day.'+\'/\'+$(\'#'.$FieldKey.'year\').raw().value)) { return showError(\''.$DisplayError.'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n"; if (empty($Field['Required'])) { $ValItem = ' if ($(\'#'.$FieldKey.'month\').raw().value != ""'; if (isset($Field['MinLength']) && $Field['MinLength'] == 3) { $ValItem .= ' || $(\'#'.$FieldKey.'day\').raw().value != ""'; } $ValItem .= ' || $(\'#'.$FieldKey.'year\').raw().value != "") {'."\r\n"; $ValItem .= $ValItemHold; $ValItem .= " }\r\n"; } else { $ValItem .= $ValItemHold; } } elseif ($Field['Type'] == 'checkbox') { $ValItem = ' if (!$(\'#'.$FieldKey.'\').checked) { return showError(\''.$FieldKey.'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n"; } elseif ($Field['Type'] == 'compare') { $ValItem = ' if ($(\'#'.$FieldKey.'\').raw().value!=$(\'#'.$Field['CompareField'].'\').raw().value) { return showError(\''.$FieldKey.','.$Field['CompareField'].'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n"; } if (empty($Field['Required']) && $Field['Type'] != 'date') { $ReturnJS .= ' if ($(\'#'.$FieldKey.'\').raw().value!="") {'."\r\n "; $ReturnJS .= $ValItem; $ReturnJS .= " }\r\n"; } else { $ReturnJS .= $ValItem; } $ValItem = ''; } $ReturnJS .= "}\r\n"; $ReturnJS .= "//]]>\r\n"; $ReturnJS .= "</script>\r\n"; return $ReturnJS; } } ?>