Re: your method for validating forms

From: Date: Thu, 02 Oct 2003 01:38:59 +0000
Subject: Re: your method for validating forms
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-164653@lists.php.net to get a copy of this message
On Wed, 2003-10-01 at 17:43, Chris W. Parker wrote: > Hey people. Hey [snip] > 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? I have done something similar to this in a couple projects and have been fairly happy with it. Without going into too much detail, I define a few more array elements and call functions instead of doing everything in a switch statement. Instead of a 'type' element, I have 'rules' which is a comma delimited list of the validation I want it to run on each field. For example, IsEmail, IsNotBlank, IsPhoneNumber. These correspond to functions of the same name. The reason I have more than one per field (why not just use IsPhoneNumber in place of IsNotBlank,IsPhoneNumber?) is so that I can give more detailed error messages. I think it is a good idea to move your validation into one place, whether it be in a switch statement or different functions. Not only does it save you time, but it keeps your validation consistent across your application. - Brad

« previous php.general (#164653) next »