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
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 "
3. Add chrono_servervalidate.php file to the components/com_chronocontact/ folder
Post edited by: cuhuak, at: 2008/05/04 14:31<br><br>Post edited by: cuhuak, at: 2008/05/04 14:35
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
<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 "
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
<?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
This topic is locked and no more replies can be posted.
