Hey people.
I'm trying to come up with an easy way to validate forms. I've got an
idea and I'd like your feedback as well as suggestions and/or your own
methods.
My idea is to have a multi-dimensional array with fields: data and type.
Let's say you have a form with three fields. First Name (fname), Last
Name (lname), and Phone Number (phone). It's sent to a processing script
via GET. On the processing script you have the basics:
<? // pseudo code
// collect data
$fname = (!empty($_GET['fname'])) ? $_GET['fname'] : "" ;
$lname = (!empty($_GET['lname'])) ? $_GET['lname'] : "" ;
$phone = (!empty($_GET['phone'])) ? $_GET['phone'] : "" ;
// validate data
if($fname is not [a-zA-Z]{2,20})
{
// mark as error
}
if($lname is not [a-zA-Z]{2,20})
{
// mark as error
}
$phone = stripOutEverythingButTheNumbers($phone);
if($phone is not [0-9]{10}) // we only sell to US via website
{
// mark as error
}
$_SESSION['form_errors'] = put_the_errors_in_here;
redirect("to_the_previous_page.php"); // where the errors will be read
// and the fields with bad data
// will be marked appropriately
?>
What I'd like to do is get rid of all the if's and what not and throw
them into a function. What I thought of doing to replace all this is:
<? // pseudo code
$formdata['fname']['data'] = (!empty($_GET['fname'])) ? $_GET['fname'] :
"" ;
$formdata['fname']['type'] = "name";
$formdata['lname']['data'] = (!empty($_GET['lname'])) ? $_GET['lname'] :
"" ;
$formdata['lname']['type'] = "name";
$formdata['phone']['data'] = (!empty($_GET['phone'])) ? $_GET['phone'] :
"" ;
$formdata['phone']['type'] = "phonenumber";
$_SESSION['form_errors'] = validateFormData($formdata);
redirect("to_the_previous_page.php");
?>
The validateFormDate() function would be defined something like this:
function validateFormData($input)
{
foreach($input as $field)
{
switch ($field['type'])
{
case 'name':
// do the magic
break;
case 'phonenumber':
// do the magic
break;
}
}
}
The validateFormData() function will return false if there are no errors
to report.
For a form that has a lot of fields to validate I think this can make
things pretty easy.
So... what do you think?
Chris.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php