/includes/libraries/formvalidator/formvalidator.php
PHP | 505 lines | 408 code | 64 blank | 33 comment | 74 complexity | 3e856441e788c43d168e2def0cd12a2a MD5 | raw file
Possible License(s): LGPL-2.1
- <?PHP
- /*
- -------------------------------------------------------------------------
- PHP Form Validator (formvalidator.php)
- Version 1.0
- Copyright (C) 2008 html-form-guide.com. All rights reserved.
- You can freely use this script.
- You may adapt this script for your own needs, provided these opening credit
- lines are kept intact.
-
- This Form validation script is distributed free from html-form-guide.com
- For updates, please visit:
- http://www.html-form-guide.com/php-form/php-form-validation.php
-
- Questions & comments please send to support@html-form-guide.com
- -------------------------------------------------------------------------
- */
-
- /**
- * Carries information about each of the form validations
- */
- class ValidatorObj {
- var $variable_name;
- var $validator_string;
- var $error_string;
- }
-
- /**
- * Base class for custom validation objects
- **/
- class CustomValidator {
- function DoValidate(&$formars,&$error_hash) {
- return true;
- }
- }
-
- /** Default error messages*/
- define("E_VAL_REQUIRED_VALUE","?? ??????? %s");
- define("E_VAL_MAXLEN_EXCEEDED","???????????? ????? ?? ?????? ????????? %s.");
- define("E_VAL_MINLEN_CHECK_FAILED","???????? ?????? ???? ?????? %d ??? %s");
- define("E_VAL_ALNUM_CHECK_FAILED","????????? ?????? ????? %s");
- define("E_VAL_ALNUM_S_CHECK_FAILED","???????? ?????? ????? ? ????? %s");
- define("E_VAL_NUM_CHECK_FAILED","????????? ?????? ????? %s");
- define("E_VAL_ALPHA_CHECK_FAILED","????????? ?????? ??????? %s");
- define("E_VAL_ALPHA_S_CHECK_FAILED","????????? ?????? ???????, ?? %s");
- define("E_VAL_EMAIL_CHECK_FAILED","????? ???????????? ? ????? ?? ?????");
- define("E_VAL_LESSTHAN_CHECK_FAILED","???????? ?????? ???? ????? %f ??? %s");
- define("E_VAL_GREATERTHAN_CHECK_FAILED","???????? ?????? ???? ?????? ??? %f ??? %s");
- define("E_VAL_REGEXP_CHECK_FAILED","??? ???-?? ?? ???%s");
- define("E_VAL_DONTSEL_CHECK_FAILED","????????? ??????? ?? ????? %s");
- define("E_VAL_SELMIN_CHECK_FAILED","???????? ??????????? %d ??????? ??? %s");
- define("E_VAL_SELONE_CHECK_FAILED","???????? ??????? %s");
- define("E_VAL_EQELMNT_CHECK_FAILED","???????? %s ?????? ????????? ? %s");
- define("E_VAL_NEELMNT_CHECK_FAILED","???????? %s ?? ?????? ???? ????? ?? ??? %s");
-
-
-
- /**
- * FormValidator: The main class that does all the form validations
- **/
- class FormValidator {
- var $validator_array;
- var $error_hash;
- var $custom_validators;
-
- var $js_validator;
-
- function get_js_validator($task) {
- return json_encode($this->js_validator[$task]);
- // return $v = $this->js_validator;
- // return json_encode($this->js_validator);
- }
-
-
- function FormValidator() {
- $this->validator_array = array();
- $this->error_hash = array();
- $this->custom_validators=array();
- }
-
- function AddCustomValidator(&$customv) {
- array_push($this->custom_validators,$customv);
- }
-
- function addValidation($variable,$validator,$error) {
- $validator_obj = new ValidatorObj();
- $validator_obj->variable_name = $variable;
- $validator_obj->validator_string = $validator;
- $validator_obj->error_string = $error;
- array_push($this->validator_array,$validator_obj);
- }
- function GetErrors() {
- return $this->error_hash;
- }
-
- function ValidateForm() {
- $bret = true;
-
- $error_string="";
- $error_to_display = "";
-
-
- if(strcmp($_SERVER['REQUEST_METHOD'],'POST')==0) {
- $form_variables = $_POST;
- }
- else {
- $form_variables = $_GET;
- }
-
- $vcount = count($this->validator_array);
-
-
- foreach($this->validator_array as $val_obj) {
- if(!$this->ValidateObject($val_obj,$form_variables,$error_string)) {
- $bret = false;
- $this->error_hash[$val_obj->variable_name] = $error_string;
- }
- }
-
- if(true == $bret && count($this->custom_validators) > 0) {
- foreach( $this->custom_validators as $custom_val) {
- if(false == $custom_val->DoValidate($form_variables,$this->error_hash)) {
- $bret = false;
- }
- }
- }
- return $bret;
- }
-
-
- function ValidateObject($validatorobj,$formvariables,&$error_string) {
- $bret = true;
-
- $splitted = explode("=",$validatorobj->validator_string);
- $command = $splitted[0];
- $command_value = '';
-
- if(isset($splitted[1]) && strlen($splitted[1])>0) {
- $command_value = $splitted[1];
- }
-
- $default_error_message="";
-
- $input_value ="";
-
- if(isset($formvariables[$validatorobj->variable_name])) {
- $input_value = $formvariables[$validatorobj->variable_name];
- }
-
- $bret = $this->ValidateCommand($command,$command_value,$input_value,
- $default_error_message,
- $validatorobj->variable_name,
- $formvariables);
-
-
- if(false == $bret) {
- if(isset($validatorobj->error_string) &&
- strlen($validatorobj->error_string)>0) {
- $error_string = $validatorobj->error_string;
- }
- else {
- $error_string = $default_error_message;
- }
-
- }//if
- return $bret;
- }
-
- function validate_req($input_value, &$default_error_message,$variable_name) {
- $bret = true;
- if(!isset($input_value) ||
- strlen($input_value) <=0) {
- $bret=false;
- $default_error_message = sprintf(E_VAL_REQUIRED_VALUE,$variable_name);
- }
- return $bret;
- }
-
- function validate_maxlen($input_value,$max_len,$variable_name,&$default_error_message) {
- $bret = true;
- if(isset($input_value) ) {
- $input_length = strlen($input_value);
- if($input_length > $max_len) {
- $bret=false;
- $default_error_message = sprintf(E_VAL_MAXLEN_EXCEEDED,$variable_name);
- }
- }
- return $bret;
- }
-
- function validate_minlen($input_value,$min_len,$variable_name,&$default_error_message) {
- $bret = true;
- if(isset($input_value) ) {
- $input_length = strlen($input_value);
- if($input_length < $min_len) {
- $bret=false;
- $default_error_message = sprintf(E_VAL_MINLEN_CHECK_FAILED,$min_len,$variable_name);
- }
- }
- return $bret;
- }
-
- function test_datatype($input_value,$reg_exp) {
- if(ereg($reg_exp,$input_value)) {
- return false;
- }
- return true;
- }
-
- function validate_email($email) {
- return eregi("^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$", $email);
- }
-
- function validate_for_numeric_input($input_value,&$validation_success) {
-
- $more_validations=true;
- $validation_success = true;
- if(strlen($input_value)>0) {
-
- if(false == is_numeric($input_value)) {
- $validation_success = false;
- $more_validations=false;
- }
- }
- else {
- $more_validations=false;
- }
- return $more_validations;
- }
-
- function validate_lessthan($command_value,$input_value,
- $variable_name,&$default_error_message) {
- $bret = true;
- if(false == $this->validate_for_numeric_input($input_value,
- $bret)) {
- return $bret;
- }
- if($bret) {
- $lessthan = doubleval($command_value);
- $float_inputval = doubleval($input_value);
- if($float_inputval >= $lessthan) {
- $default_error_message = sprintf(E_VAL_LESSTHAN_CHECK_FAILED,
- $lessthan,
- $variable_name);
- $bret = false;
- }//if
- }
- return $bret ;
- }
-
- function validate_greaterthan($command_value,$input_value,$variable_name,&$default_error_message) {
- $bret = true;
- if(false == $this->validate_for_numeric_input($input_value,$bret)) {
- return $bret;
- }
- if($bret) {
- $greaterthan = doubleval($command_value);
- $float_inputval = doubleval($input_value);
- if($float_inputval <= $greaterthan) {
- $default_error_message = sprintf(E_VAL_GREATERTHAN_CHECK_FAILED,
- $greaterthan,
- $variable_name);
- $bret = false;
- }//if
- }
- return $bret ;
- }
-
- function validate_select($input_value,$command_value,&$default_error_message,$variable_name) {
- $bret=false;
- if(is_array($input_value)) {
- foreach($input_value as $value) {
- if($value == $command_value) {
- $bret=true;
- break;
- }
- }
- }
- else {
- if($command_value == $input_value) {
- $bret=true;
- }
- }
- if(false == $bret) {
- $default_error_message = sprintf(E_VAL_SHOULD_SEL_CHECK_FAILED,
- $command_value,$variable_name);
- }
- return $bret;
- }
-
- function validate_dontselect($input_value,$command_value,&$default_error_message,$variable_name) {
- $bret=true;
- if(is_array($input_value)) {
- foreach($input_value as $value) {
- if($value == $command_value) {
- $bret=false;
- $default_error_message = sprintf(E_VAL_DONTSEL_CHECK_FAILED,$variable_name);
- break;
- }
- }
- }
- else {
- if($command_value == $input_value) {
- $bret=false;
- $default_error_message = sprintf(E_VAL_DONTSEL_CHECK_FAILED,$variable_name);
- }
- }
- return $bret;
- }
-
-
-
- function ValidateCommand($command,$command_value,$input_value,&$default_error_message,$variable_name,$formvariables) {
- $bret=true;
- switch($command) {
- case 'req': {
- $bret = $this->validate_req($input_value, $default_error_message, $variable_name);
-
- $this->js_validator['rules'][$variable_name]['required'] = true;
- $this->js_validator['messages'][$variable_name]['required'] = $default_error_message;
-
- break;
- }
-
- case 'maxlen': {
- $max_len = intval($command_value);
- $bret = $this->validate_maxlen($input_value,$max_len,$variable_name,
- $default_error_message);
- $this->js_validator['rules'][$variable_name]['maxlength'] = $max_len;
- $this->js_validator['messages'][$variable_name]['maxlength'] = $default_error_message;
- break;
- }
-
- case 'minlen': {
- $min_len = intval($command_value);
-
-
- $bret = $this->validate_minlen($input_value,$min_len,$variable_name,
- $default_error_message);
-
- $this->js_validator['rules'][$variable_name]['minlength'] = $min_len;
- $this->js_validator['messages'][$variable_name]['minlength'] = $default_error_message;
-
- break;
- }
-
- case 'alnum': {
- $bret= $this->test_datatype($input_value,"[^A-Za-z0-9]");
- if(false == $bret) {
- $default_error_message = sprintf(E_VAL_ALNUM_CHECK_FAILED,$variable_name);
- }
- break;
- }
-
- case 'alnum_s': {
- $bret= $this->test_datatype($input_value,"[^A-Za-z0-9 ]");
- if(false == $bret) {
- $default_error_message = sprintf(E_VAL_ALNUM_S_CHECK_FAILED,$variable_name);
- }
- break;
- }
-
- case 'num':
- case 'numeric': {
- $bret= $this->test_datatype($input_value,"[^0-9]");
- if(false == $bret) {
- $default_error_message = sprintf(E_VAL_NUM_CHECK_FAILED,$variable_name);
- }
- $this->js_validator['rules'][$variable_name]['number'] = true;
- $this->js_validator['messages'][$variable_name]['number'] = $default_error_message;
- break;
- }
-
- case 'alpha': {
- $bret= $this->test_datatype($input_value,"[^A-Za-z]");
- if(false == $bret) {
- $default_error_message = sprintf(E_VAL_ALPHA_CHECK_FAILED,$variable_name);
- }
- break;
- }
- case 'alpha_s': {
- $bret= $this->test_datatype($input_value,"[^A-Za-z ]");
- if(false == $bret) {
- $default_error_message = sprintf(E_VAL_ALPHA_S_CHECK_FAILED,$variable_name);
- }
- break;
- }
- case 'email': {
- if(isset($input_value) && strlen($input_value)>0) {
- $bret= $this->validate_email($input_value);
- if(false == $bret) {
- $default_error_message = E_VAL_EMAIL_CHECK_FAILED;
- }
- }
- $this->js_validator['rules'][$variable_name]['email'] = true;
- $this->js_validator['messages'][$variable_name]['email'] = E_VAL_EMAIL_CHECK_FAILED;
- break;
- }
- case "lt":
- case "lessthan": {
- $bret = $this->validate_lessthan($command_value,
- $input_value,
- $variable_name,
- $default_error_message);
- $this->js_validator['rules'][$variable_name]['max'] = $command_value;
- $this->js_validator['messages'][$variable_name]['max'] = $default_error_message;
- break;
- }
- case "gt":
- case "greaterthan": {
- $bret = $this->validate_greaterthan($command_value,
- $input_value,
- $variable_name,
- $default_error_message);
- $this->js_validator['rules'][$variable_name]['min'] = $command_value;
- $this->js_validator['messages'][$variable_name]['min'] = $default_error_message;
- break;
- }
-
- case "regexp": {
- if(isset($input_value) && strlen($input_value)>0) {
- if(!preg_match("$command_value",$input_value)) {
- $bret=false;
- $default_error_message = sprintf(E_VAL_REGEXP_CHECK_FAILED,$variable_name);
- }
- }
- break;
- }
- case "dontselect":
- case "dontselectchk":
- case "dontselectradio": {
- $bret = $this->validate_dontselect($input_value,
- $command_value,
- $default_error_message,
- $variable_name);
- break;
- }//case
-
- case "shouldselchk":
- case "selectradio": {
- $bret = $this->validate_select($input_value,
- $command_value,
- $default_error_message,
- $variable_name);
- break;
- }//case
- case "selmin": {
- $min_count = intval($command_value);
-
- if(isset($input_value)) {
- if($min_count > 1) {
- $bret = (count($input_value) >= $min_count )?true:false;
- }
- else {
- $bret = true;
- }
- }
- else {
- $bret= false;
- $default_error_message = sprintf(E_VAL_SELMIN_CHECK_FAILED,$min_count,$variable_name);
- }
- break;
- }//case
- case "selone": {
- if(false == isset($input_value)||
- strlen($input_value)<=0) {
- $bret= false;
- $default_error_message = sprintf(E_VAL_SELONE_CHECK_FAILED,$variable_name);
- }
- break;
- }
- case "eqelmnt": {
-
- if(isset($formvariables[$command_value]) &&
- strcmp($input_value,$formvariables[$command_value])==0 ) {
- $bret=true;
- }
- else {
- $bret= false;
- $default_error_message = sprintf(E_VAL_EQELMNT_CHECK_FAILED,$variable_name,$command_value);
- }
- // $this->js_validator['rules'][$variable_name]['equalTo'] = '.' . $command_value;
- // $this->js_validator['messages'][$variable_name]['equalTo'] = $default_error_message;
-
- break;
- }
- case "neelmnt": {
- if(isset($formvariables[$command_value]) &&
- strcmp($input_value,$formvariables[$command_value]) !=0 ) {
- $bret=true;
- }
- else {
- $bret= false;
- $default_error_message = sprintf(E_VAL_NEELMNT_CHECK_FAILED,$variable_name,$command_value);
- }
- break;
- }
-
- }//switch
- return $bret;
- }//validdate command
- }
- /*
- Copyright (C) 2008 html-form-guide.com . All rights reserved.
- */