Hi,
I am new to PHP.
I want to validate the Form, but i didnt find any simple validation framework to achieve this.
I took this code snippet out of the PHP Power programming text and added some logic to it to make it reusable.
Please give me some suggestion to improve this.
function sanitize(&$variables,$signatures){
$error_msg=false;
foreach($signatures as $name=>$sig){
//See if the vairalbe is required and not set
//echo $name." set to ".$variables[$name]."<br/>";
if( (!isset($variables[$name]) || trim($variables[$name])=='' )&& isset($sig['required']) && $sig['required']['value']){
$error_msg[]=$sig['required']['message'];
continue;
}
//try Casting to the desired type
$temp[$name]=$variables[$name];
if( isset($sig['type']) && !settype($temp[$name],$sig['type']['value']) ){
$error_msg[]=$sig['type']['message'];
continue;
}
if(isset( $sig['minLength']) &&
isset($sig['minLength']['value']) &&
( strlen($temp[$name])< (int)$sig['minLength']['value'] )
){
$error_msg[]=$sig['minLength']['message'];
}
if(isset( $sig['maxLength']) &&
isset($sig['maxLength']['value']) &&
( strlen($temp[$name])> (int)$sig['maxLength']['value'] )
){
$error_msg[]=$sig['maxLength']['message'];
}
if(isset( $sig['min']) &&
isset($sig['min']['value']) &&
( ((double)$temp[$name]) < ((double)$sig['min']['value']) )
){
$error_msg[]=$sig['min']['message'];
}
if(isset( $sig['max']) &&
isset($sig['max']['value']) &&
( ((double)$temp[$name]) > ((double)$sig['max']['value']) )
){
$error_msg[]=$sig['max']['message'];
}
if( isset($sig['function']) ){
//{$sig['function']}($temp[$name]);
$temp[$name] = $sig['function']($temp[$name]);
}
$variables[$name]=$temp[$name];
}
return $error_msg;
}
This is how i use it:
$vars=array('name'=>'','email'=>'am_developer@yahoo.com','password'=>'1234567','age'=>'22L6');
$rules=array(
'name'=>array(
'required'=>array(
'value'=>false,
'message'=>'Please enter the name.'
),
'type'=>array(
'value'=>'String',
'message'=>'Name can contain only characters.'
)
),
'email'=>array(
'required'=>array(
'value'=>true,
'message'=>'Please enter the email.'
),
'type'=>array(
'value'=>'String',
'message'=>'Na me can contain only characters.'
)
),
'password'=>array(
'required'=>array(
'value'=>true,
'message'=>'Please enter the password.'
),
'type'=>array(
'value'=>'String',
'message'=>'Name can contain only characters.'
),
'minLength'=>array(
'value'=>'8',
'message'=>'Password should be 8 chars long atleast.'
)
),
'age'=>array(
'required'=>array(
'value'=>false,
'message'=>'Please enter the password.'
),
'type'=>array(
'value'=>'int',
'message'=>'Age can be only number.'
),
'min'=>array(
'value'=>'6',
'message'=>'Age should be greater than 10.'
),
'max'=>array(
'value'=>'8',
'message'=>'Age cannot be greater than 8.'
)
)
);
$errors=array();
$errors=sanitize($vars,$rules,$errors);
if( $errors!=null ){
foreach($errors as $x)
echo $x,"<br/>";
}
foreach($vars as $x)
echo $x,"<br/>";