Revision: 24007
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at February 18, 2010 11:38 by nate63179
Initial Code
/** * ============================================== * Generic form processing code * ============================================== */ $form_errors = array(); $form_errorlist = false; /** * Adds an error to our $form_errors variable * * @return void **/ function add_error($error) { global $form_errorlist, $form_errors; $form_errorlist = true; $form_errors[] = $error; } /** * Called by validate_form * @param $method * the container holding our form data $_GET or $_POST * @return void **/ function _process_form($method) { if (function_exists("process_form")) { $data = $method; // clean up any elements not included within foreach($data as $key => $val) { if (preg_match("/(submit|required)|(_desc$)/i", $key) == 1) { unset($data[$key]); } } // call process_form(), pass clean form values process_form($data); } } /** * Generic validation steps * * @return bool **/ function validate_form($method) { $process = true; // assume true until proven otherwise if (!isset($method['required'])) { add_error("Required hidden element 'required' missing."); $process = false; } else { $required_fields = explode(',', $method['required']); // Scan for empties foreach($required_fields as $val) { if (empty($method[$val])) { // Required element is missing data if (isset($method[$val . "_desc"])) { $errormsg = "The required field '" . $method[$val . "_desc"] . "' was empty."; } else { $errormsg = "The required field '$val' was emtpy."; } add_error($errormsg); $process = false; } } // Call dynamic validator methods foreach($method as $key => $val) { if (preg_match("/(submit|required)|(_desc$)/i", $key) != 1) { $validator_function = $key . "_validate"; // the name of the function which will be called for validation if (function_exists($validator_function)) { if (!isset($method[$key . "_desc"])) { $result = $validator_function($val, $key); } else { $result = $validator_function($val, $method[$key . "_desc"]); } if ($result !== true) { add_error($result); $process = false; } } } } } if ($process) { _process_form($method); return true; } return false; } /** * Returns the value stored in $method or an alternate value when not available * @param $field_name * The name value of the input element * @param $alternate * Text to be displayed if value field_name value is undefined * @return String * @author Nate Miller **/ function write_form_var($field_name, $alternate) { global $method; $out = $alternate; if ($method[$field_name]) { $out = $method[$field_name]; } return $out; } /** * ============================================== * Custom validation logic * ============================================== */ $method = &$_GET; if (isset($method['submit'])) { validate_form($method); } /** * Validates an email address * @param $data * the submitted value * @param $desc * the field descriptor - human friendly name of failed field * * @return bool | error string * @author Nate Miller **/ function email_validate($data, $desc) { $email_reg = "/^[a-z0-0\._-]+@+[a-z0-0\.-]+\.+[a-z]{2,3}$/i"; if (preg_match($email_reg, $data) != 1) return "The '$desc' field in invalid."; return true; } /** * Controls called by validate_form when form is sucessful * * @return void * @author Nate Miller **/ function process_form() { echo "Submit dude"; }
Initial URL
Initial Description
A handy, generic form processor which validates presence of fields marked in a hidden value, like: <input>. Easy to override and customize as needed. Adapted from a script found in PHP 5 Unleashed.
Initial Title
PHP: Generic form processing script
Initial Tags
php, forms
Initial Language
PHP