serverValidate - it is very easy!

Please post your suggestions or any hacks you have made here

serverValidate - it is very easy!

Postby cuhuak on Sun May 04, 2008 6:27 pm

Hi all. Here i'll describe my server validation.
It consists of of 3 steps:
1. to add control to the administration panel (validation tab),
administrator/components/com_chronocontact/admin.chronocontact.html.php file
2. to add code to components/com_chronocontact/chronocontact.php file
3. to add chrono_servervalidate.php file (contains function for validation).

OK, let's begin.

1.
administrator/components/com_chronocontact/admin.chronocontact.html.php file
line ~ 742
Code: Select all
   <tr style="background-color:#c9c9c9 ">
      <td><?php echo JHTML::_('tooltip', "Enable Server Validation ?" ); ?></td>
      <td><strong>Enable Server Validation ?</strong> </td>
      <td></td>
      <td>
      <select name="params[servervalidate]" id="params[servervalidate]">
         <option<?php if($paramsvalues->servervalidate == 'No'){ echo ' selected';} ?> value="No">No</option>
         <option<?php if($paramsvalues->servervalidate == 'Yes'){ echo ' selected';} ?> value="Yes">Yes</option>
      </select>
      </td>
   </tr>

Now go to the validation tab and you will see servervalidation dropdown
2. components/com_chronocontact/chronocontact.php
line: before "/** * Main E-mail type switch "
Code: Select all
       if ( trim($paramsvalues->servervalidate) == 'Yes' ) {      
         include_once('chrono_servervalidate.php');
         $arr_required = explode(",", str_replace(" ","",$paramsvalues->val_required));
         $arr_validate_number = explode(",", str_replace(" ","",$paramsvalues->val_validate_number));
         $arr_validate_digits = explode(",", str_replace(" ","",$paramsvalues->val_validate_digits));
         $arr_validate_alpha = explode(",", str_replace(" ","",$paramsvalues->val_validate_alpha));
         $arr_validate_alphanum = explode(",", str_replace(" ","",$paramsvalues->val_validate_alphanum));
         $arr_validate_date = explode(",", str_replace(" ","",$paramsvalues->val_validate_date));
         $arr_validate_email = explode(",", str_replace(" ","",$paramsvalues->val_validate_email));
         $arr_validate_url = explode(",", str_replace(" ","",$paramsvalues->val_validate_url));
         $arr_validate_date_au = explode(",", str_replace(" ","",$paramsvalues->val_validate_date_au));
         $arr_validate_currency_dollar = explode(",", str_replace(" ","",$paramsvalues->val_validate_currency_dollar));
         $arr_validate_selection = explode(",", str_replace(" ","",$paramsvalues->val_validate_selection));
         $arr_validate_one_required = explode(",", str_replace(" ","",$paramsvalues->val_validate_one_required));
         foreach ( $fields as $name => $post) {
            // replace $name with $titlesvalues->$name if you wants to see 'Elements titles' (if it was assigned...)
            if(in_array($name,$arr_required)){
               validator($name, trim($post), 'string', 1);
            }
            if(in_array($name,$arr_validate_number)){
               validator($name, trim($post) , "number"«»);
            }
            if(in_array($name,$arr_validate_digits)){
               validator($name, trim($post) , "digits"«»);
            }
            if(in_array($name,$arr_validate_alpha)){
               validator($name, trim($post) , "alfa"«»);
            }
            if(in_array($name,$arr_validate_alphanum)){
               validator($name, trim($post) , "alphanum"«»);
            }
            if(in_array($name,$arr_validate_date)){
               validator($name, trim($post) , "date"«»);
            }
            if(in_array($name,$arr_validate_email)){
               validator($name, trim($post) , "email"«»);
            }
            if(in_array($name,$arr_validate_url)){
               validator($name, trim($post) , "url"«»);
            }
            if(in_array($name,$arr_validate_date_au)){
               validator($name, trim($post) , "date_au"«»);
            }
            if(in_array($name,$arr_validate_currency_dollar)){
               validator($name, trim($post) , "currency_dollar"«»);
            }
            if(in_array($name,$arr_validate_selection)){
               validator($name, trim($post) , "number"«»);
            }
            if(in_array($name,$arr_validate_one_required)){
               validator($name, trim($post) , "one_required"«»);
            }
           }
           if (count($validator_errors)>0) {
              if ($debug) {
                 echo '<hr /><b>ERRORS:</b> <br />';
                 foreach ( $validator_errors as $type => $error) {
                    echo 'rule: ' .$type . ' * '. $error . '<br />';
                 }
                 echo '<hr />';
              }
              echo 'Data you typed is invalid.';
            showform($_POST);
            return;         
           }
       }


3. Add chrono_servervalidate.php file to the components/com_chronocontact/ folder
Code: Select all
<?php
global $validator_errors;

function validator($field_descr, $field_data, $field_type='', $field_required=0) {

   # array for storing error messages
   global $validator_errors;

   if(!$field_data && !$field_required){ return; }

   # initialize a flag variable - used to flag whether data is valid or not
   $field_ok=false;

   # a hash array of "types of data" pointing to "regexps" used to validate the data:
   $data_types=array(
      'number' => '/^[0-9]+$/',
      'digits' => '/^[+-]?\d+$/',
      'alfa' => '/^[a-zA-Z]+$/i',
      'alphanum' => '/^[\w]+$/i',
      'date' => '/^[\d]$/',//?DATE? o.O timestamp?
      'email' => '/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/',
      'url' => '/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:«»(\d+))?\/?/i',
      'date-au' => '/^(\d{2})\/(\d{2})\/(\d{4})$/', // format: dd/MM/YYYY
      'currency-dollar' => '/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/',
      'phonenumber' => '/^[0-9 -\(\)]+$/',
      'string'=>''
   );
   
   # check for required fields
   if ($field_required && $field_data=='') {
      $validator_errors[] = "Field '$field_descr' is required.";
      return 0;
   }
   
   if ($field_type == "string"«») {
      $field_ok = true;
   } else if ($field_type != ''){
      $field_ok = preg_match($data_types[$field_type], $field_data);
   }
   
   if (!$field_ok) {
      $validator_errors[$field_type] = "Field '$field_descr' is invalid.";
      return 0;
   }
   return 1;
}
?>


Post edited by: cuhuak, at: 2008/05/04 14:31<br><br>Post edited by: cuhuak, at: 2008/05/04 14:35
cuhuak
Fresh Boarder
 
Posts: 10
Joined: Fri Apr 11, 2008 8:39 am

Return to Suggestions & Hacks

Who is online

Users browsing this forum: No registered users and 1 guest