summaryrefslogtreecommitdiffstats
path: root/system/libraries/Validation.php
diff options
context:
space:
mode:
Diffstat (limited to 'system/libraries/Validation.php')
-rw-r--r--system/libraries/Validation.php1468
1 files changed, 734 insertions, 734 deletions
diff --git a/system/libraries/Validation.php b/system/libraries/Validation.php
index ec7e412c6..7ad8509a3 100644
--- a/system/libraries/Validation.php
+++ b/system/libraries/Validation.php
@@ -1,735 +1,735 @@
-<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
-/**
- * Code Igniter
- *
- * An open source application development framework for PHP 4.3.2 or newer
- *
- * @package CodeIgniter
- * @author Rick Ellis
- * @copyright Copyright (c) 2006, pMachine, Inc.
- * @license http://www.codeignitor.com/user_guide/license.html
- * @link http://www.codeigniter.com
- * @since Version 1.0
- * @filesource
- */
-
-// ------------------------------------------------------------------------
-
-/**
- * Validation Class
- *
- * @package CodeIgniter
- * @subpackage Libraries
- * @category Validation
- * @author Rick Ellis
- * @link http://www.codeigniter.com/user_guide/libraries/validation.html
- */
-class CI_Validation {
-
- var $CI;
- var $error_string = '';
- var $_error_array = array();
- var $_rules = array();
- var $_fields = array();
- var $_error_messages = array();
- var $_current_field = '';
- var $_safe_form_data = FALSE;
- var $_error_prefix = '<p>';
- var $_error_suffix = '</p>';
-
-
-
- /**
- * Constructor
- *
- */
- function CI_Validation()
- {
- $this->CI =& get_instance();
- log_message('debug', "Validation Class Initialized");
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Set Fields
- *
- * This function takes an array of field names as input
- * and generates class variables with the same name, which will
- * either be blank or contain the $_POST value corresponding to it
- *
- * @access public
- * @param string
- * @param string
- * @return void
- */
- function set_fields($data = '', $field = '')
- {
- if ($data == '')
- {
- if (count($this->_fields) == 0)
- {
- return FALSE;
- }
- }
- else
- {
- if ( ! is_array($data))
- {
- $data = array($data => $field);
- }
-
- if (count($data) > 0)
- {
- $this->_fields = $data;
- }
- }
-
- foreach($this->_fields as $key => $val)
- {
- $this->$key = ( ! isset($_POST[$key]) OR is_array($_POST[$key])) ? '' : $this->prep_for_form($_POST[$key]);
-
- $error = $key.'_error';
- if ( ! isset($this->$error))
- {
- $this->$error = '';
- }
- }
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Set Rules
- *
- * This function takes an array of field names and validation
- * rules as input ad simply stores is for use later.
- *
- * @access public
- * @param mixed
- * @param string
- * @return void
- */
- function set_rules($data, $rules = '')
- {
- if ( ! is_array($data))
- {
- if ($rules == '')
- return;
-
- $data[$data] = $rules;
- }
-
- foreach ($data as $key => $val)
- {
- $this->_rules[$key] = $val;
- }
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Set Error Message
- *
- * Lets users set their own error messages on the fly. Note: The key
- * name has to match the function name that it corresponds to.
- *
- * @access public
- * @param string
- * @param string
- * @return string
- */
- function set_message($lang, $val = '')
- {
- if ( ! is_array($lang))
- {
- $lang = array($lang => $val);
- }
-
- $this->_error_messages = array_merge($this->_error_messages, $lang);
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Set The Error Delimiter
- *
- * Permits a prefix/suffix to be added to each error message
- *
- * @access public
- * @param string
- * @param string
- * @return void
- */
- function set_error_delimiters($prefix = '<p>', $suffix = '</p>')
- {
- $this->_error_prefix = $prefix;
- $this->_error_suffix = $suffix;
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Run the Validator
- *
- * This function does all the work.
- *
- * @access public
- * @return bool
- */
- function run()
- {
- // Do we even have any data to process? Mm?
- if (count($_POST) == 0 OR count($this->_rules) == 0)
- {
- return FALSE;
- }
-
- // Load the language file containing error messages
- $this->CI->lang->load('validation');
-
- // Cycle through the rules and test for errors
- foreach ($this->_rules as $field => $rules)
- {
- //Explode out the rules!
- $ex = explode('|', $rules);
-
- // Is the field required? If not, if the field is blank we'll move on to the next text
- if ( ! in_array('required', $ex, TRUE) AND strpos($rules, 'callback_') === FALSE)
- {
- if ( ! isset($_POST[$field]) OR $_POST[$field] == '')
- {
- continue;
- }
- }
-
- /*
- * Are we dealing with an "isset" rule?
- *
- * Before going further, we'll see if one of the rules
- * is to check whether the item is set (typically this
- * applies only to checkboxes). If so, we'll
- * test for it here since there's not reason to go
- * further
- */
- if ( ! isset($_POST[$field]))
- {
- if (in_array('isset', $ex, TRUE) OR in_array('required', $ex))
- {
- if ( ! isset($this->_error_messages['isset']))
- {
- if (FALSE === ($line = $this->CI->lang->line('isset')))
- {
- $line = 'The field was not set';
- }
- }
- else
- {
- $line = $this->_error_messages['isset'];
- }
-
- $field = ( ! isset($this->_fields[$field])) ? $field : $this->_fields[$field];
- $this->_error_array[] = sprintf($line, $field);
- }
-
- continue;
- }
-
- /*
- * Set the current field
- *
- * The various prepping functions need to know the
- * current field name so they can do this:
- *
- * $_POST[$this->_current_field] == 'bla bla';
- */
- $this->_current_field = $field;
-
- // Cycle through the rules!
- foreach ($ex As $rule)
- {
- // Is the rule a callback?
- $callback = FALSE;
- if (substr($rule, 0, 9) == 'callback_')
- {
- $rule = substr($rule, 9);
- $callback = TRUE;
- }
-
- // Strip the parameter (if exists) from the rule
- // Rules can contain a parameter: max_length[5]
- $param = FALSE;
- if (preg_match("/(.*?)\[(.*?)\]/", $rule, $match))
- {
- $rule = $match[1];
- $param = $match[2];
- }
-
- // Call the function that corresponds to the rule
- if ($callback === TRUE)
- {
- if ( ! method_exists($this->CI, $rule))
- {
- continue;
- }
-
- $result = $this->CI->$rule($_POST[$field], $param);
-
- // If the field isn't required and we just processed a callback we'll move on...
- if ( ! in_array('required', $ex, TRUE) AND $result !== FALSE)
- {
- continue 2;
- }
-
- }
- else
- {
- if ( ! method_exists($this, $rule))
- {
- /*
- * Run the native PHP function if called for
- *
- * If our own wrapper function doesn't exist we see
- * if a native PHP function does. Users can use
- * any native PHP function call that has one param.
- */
- if (function_exists($rule))
- {
- $_POST[$field] = $rule($_POST[$field]);
- $this->$field = $_POST[$field];
- }
-
- continue;
- }
-
- $result = $this->$rule($_POST[$field], $param);
- }
-
- // Did the rule test negatively? If so, grab the error.
- if ($result === FALSE)
- {
- if ( ! isset($this->_error_messages[$rule]))
- {
- if (FALSE === ($line = $this->CI->lang->line($rule)))
- {
- $line = 'Unable to access an error message corresponding to your field name.';
- }
- }
- else
- {
- $line = $this->_error_messages[$rule];;
- }
-
- // Build the error message
- $mfield = ( ! isset($this->_fields[$field])) ? $field : $this->_fields[$field];
- $mparam = ( ! isset($this->_fields[$param])) ? $param : $this->_fields[$param];
- $message = sprintf($line, $mfield, $mparam);
-
- // Set the error variable. Example: $this->username_error
- $error = $field.'_error';
- $this->$error = $this->_error_prefix.$message.$this->_error_suffix;
-
- // Add the error to the error array
- $this->_error_array[] = $message;
- continue 2;
- }
- }
-
- }
-
- $total_errors = count($this->_error_array);
-
- /*
- * Recompile the class variables
- *
- * If any prepping functions were called the $_POST data
- * might now be different then the corresponding class
- * variables so we'll set them anew.
- */
- if ($total_errors > 0)
- {
- $this->_safe_form_data = TRUE;
- }
-
- $this->set_fields();
-
- // Did we end up with any errors?
- if ($total_errors == 0)
- {
- return TRUE;
- }
-
- // Generate the error string
- foreach ($this->_error_array as $val)
- {
- $this->error_string .= $this->_error_prefix.$val.$this->_error_suffix."\n";
- }
-
- return FALSE;
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Required
- *
- * @access public
- * @param string
- * @return bool
- */
- function required($str)
- {
- if ( ! is_array($str))
- {
- return (trim($str) == '') ? FALSE : TRUE;
- }
- else
- {
- return ( ! empty($str));
- }
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Match one field to another
- *
- * @access public
- * @param string
- * @return bool
- */
- function matches($str, $field)
- {
- if ( ! isset($_POST[$field]))
- {
- return FALSE;
- }
-
- return ($str !== $_POST[$field]) ? FALSE : TRUE;
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Minimum Length
- *
- * @access public
- * @param string
- * @return bool
- */
- function min_length($str, $val)
- {
- if ( ! is_numeric($val))
- {
- return FALSE;
- }
-
- return (strlen($str) < $val) ? FALSE : TRUE;
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Max Length
- *
- * @access public
- * @param string
- * @return bool
- */
- function max_length($str, $val)
- {
- if ( ! is_numeric($val))
- {
- return FALSE;
- }
-
- return (strlen($str) > $val) ? FALSE : TRUE;
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Exact Length
- *
- * @access public
- * @param string
- * @return bool
- */
- function exact_length($str, $val)
- {
- if ( ! is_numeric($val))
- {
- return FALSE;
- }
-
- return (strlen($str) != $val) ? FALSE : TRUE;
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Valid Email
- *
- * @access public
- * @param string
- * @return bool
- */
- function valid_email($str)
- {
- return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Validate IP Address
- *
- * @access public
- * @param string
- * @return string
- */
- function valid_ip($ip)
- {
- return ( ! preg_match( "/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/", $ip)) ? FALSE : TRUE;
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Alpha
- *
- * @access public
- * @param string
- * @return bool
- */
- function alpha($str)
- {
- return ( ! preg_match("/^([-a-z])+$/i", $str)) ? FALSE : TRUE;
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Alpha-numeric
- *
- * @access public
- * @param string
- * @return bool
- */
- function alpha_numeric($str)
- {
- return ( ! preg_match("/^([-a-z0-9])+$/i", $str)) ? FALSE : TRUE;
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Alpha-numeric with underscores and dashes
- *
- * @access public
- * @param string
- * @return bool
- */
- function alpha_dash($str)
- {
- return ( ! preg_match("/^([-a-z0-9_-])+$/i", $str)) ? FALSE : TRUE;
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Numeric
- *
- * @access public
- * @param int
- * @return bool
- */
- function numeric($str)
- {
- return ( ! ereg("^[0-9\.]+$", $str)) ? FALSE : TRUE;
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Is Numeric
- *
- * @access public
- * @param string
- * @return bool
- */
- function is_numeric($str)
- {
- return ( ! is_numeric($str)) ? FALSE : TRUE;
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Set Select
- *
- * Enables pull-down lists to be set to the value the user
- * selected in the event of an error
- *
- * @access public
- * @param string
- * @param string
- * @return string
- */
- function set_select($field = '', $value = '')
- {
- if ($field == '' OR $value == '' OR ! isset($_POST[$field]))
- {
- return '';
- }
-
- if ($_POST[$field] == $value)
- {
- return ' selected="selected"';
- }
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Set Radio
- *
- * Enables radio buttons to be set to the value the user
- * selected in the event of an error
- *
- * @access public
- * @param string
- * @param string
- * @return string
- */
- function set_radio($field = '', $value = '')
- {
- if ($field == '' OR $value == '' OR ! isset($_POST[$field]))
- {
- return '';
- }
-
- if ($_POST[$field] == $value)
- {
- return ' checked="checked"';
- }
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Set Checkbox
- *
- * Enables checkboxes to be set to the value the user
- * selected in the event of an error
- *
- * @access public
- * @param string
- * @param string
- * @return string
- */
- function set_checkbox($field = '', $value = '')
- {
- if ($field == '' OR $value == '' OR ! isset($_POST[$field]))
- {
- return '';
- }
-
- if ($_POST[$field] == $value)
- {
- return ' checked="checked"';
- }
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Prep data for form
- *
- * This function allows HTML to be safely shown in a form.
- * Special characters are converted.
- *
- * @access public
- * @param string
- * @return string
- */
- function prep_for_form($str = '')
- {
- if ($this->_safe_form_data == FALSE OR $str == '')
- {
- return $str;
- }
-
- return str_replace(array("'", '"', '<', '>'), array("&#39;", "&quot;", '&lt;', '&gt;'), stripslashes($str));
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Prep URL
- *
- * @access public
- * @param string
- * @return string
- */
- function prep_url($str = '')
- {
- if ($str == 'http://' OR $str == '')
- {
- $_POST[$this->_current_field] = '';
- return;
- }
-
- if (substr($str, 0, 7) != 'http://' && substr($str, 0, 8) != 'https://')
- {
- $str = 'http://'.$str;
- }
-
- $_POST[$this->_current_field] = $str;
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Strip Image Tags
- *
- * @access public
- * @param string
- * @return string
- */
- function strip_image_tags($str)
- {
- $_POST[$this->_current_field] = $this->input->strip_image_tags($str);
- }
-
- // --------------------------------------------------------------------
-
- /**
- * XSS Clean
- *
- * @access public
- * @param string
- * @return string
- */
- function xss_clean($str)
- {
- $_POST[$this->_current_field] = $this->CI->input->xss_clean($str);
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Convert PHP tags to entities
- *
- * @access public
- * @param string
- * @return string
- */
- function encode_php_tags($str)
- {
- $_POST[$this->_current_field] = str_replace(array('<?php', '<?PHP', '<?', '?>'), array('&lt;?php', '&lt;?PHP', '&lt;?', '?&gt;'), $str);
- }
-
-}
-// END Validation Class
+<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
+/**
+ * CodeIgniter
+ *
+ * An open source application development framework for PHP 4.3.2 or newer
+ *
+ * @package CodeIgniter
+ * @author Rick Ellis
+ * @copyright Copyright (c) 2006, EllisLab, Inc.
+ * @license http://www.codeignitor.com/user_guide/license.html
+ * @link http://www.codeigniter.com
+ * @since Version 1.0
+ * @filesource
+ */
+
+// ------------------------------------------------------------------------
+
+/**
+ * Validation Class
+ *
+ * @package CodeIgniter
+ * @subpackage Libraries
+ * @category Validation
+ * @author Rick Ellis
+ * @link http://www.codeigniter.com/user_guide/libraries/validation.html
+ */
+class CI_Validation {
+
+ var $CI;
+ var $error_string = '';
+ var $_error_array = array();
+ var $_rules = array();
+ var $_fields = array();
+ var $_error_messages = array();
+ var $_current_field = '';
+ var $_safe_form_data = FALSE;
+ var $_error_prefix = '<p>';
+ var $_error_suffix = '</p>';
+
+
+
+ /**
+ * Constructor
+ *
+ */
+ function CI_Validation()
+ {
+ $this->CI =& get_instance();
+ log_message('debug', "Validation Class Initialized");
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Set Fields
+ *
+ * This function takes an array of field names as input
+ * and generates class variables with the same name, which will
+ * either be blank or contain the $_POST value corresponding to it
+ *
+ * @access public
+ * @param string
+ * @param string
+ * @return void
+ */
+ function set_fields($data = '', $field = '')
+ {
+ if ($data == '')
+ {
+ if (count($this->_fields) == 0)
+ {
+ return FALSE;
+ }
+ }
+ else
+ {
+ if ( ! is_array($data))
+ {
+ $data = array($data => $field);
+ }
+
+ if (count($data) > 0)
+ {
+ $this->_fields = $data;
+ }
+ }
+
+ foreach($this->_fields as $key => $val)
+ {
+ $this->$key = ( ! isset($_POST[$key]) OR is_array($_POST[$key])) ? '' : $this->prep_for_form($_POST[$key]);
+
+ $error = $key.'_error';
+ if ( ! isset($this->$error))
+ {
+ $this->$error = '';
+ }
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Set Rules
+ *
+ * This function takes an array of field names and validation
+ * rules as input ad simply stores is for use later.
+ *
+ * @access public
+ * @param mixed
+ * @param string
+ * @return void
+ */
+ function set_rules($data, $rules = '')
+ {
+ if ( ! is_array($data))
+ {
+ if ($rules == '')
+ return;
+
+ $data[$data] = $rules;
+ }
+
+ foreach ($data as $key => $val)
+ {
+ $this->_rules[$key] = $val;
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Set Error Message
+ *
+ * Lets users set their own error messages on the fly. Note: The key
+ * name has to match the function name that it corresponds to.
+ *
+ * @access public
+ * @param string
+ * @param string
+ * @return string
+ */
+ function set_message($lang, $val = '')
+ {
+ if ( ! is_array($lang))
+ {
+ $lang = array($lang => $val);
+ }
+
+ $this->_error_messages = array_merge($this->_error_messages, $lang);
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Set The Error Delimiter
+ *
+ * Permits a prefix/suffix to be added to each error message
+ *
+ * @access public
+ * @param string
+ * @param string
+ * @return void
+ */
+ function set_error_delimiters($prefix = '<p>', $suffix = '</p>')
+ {
+ $this->_error_prefix = $prefix;
+ $this->_error_suffix = $suffix;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Run the Validator
+ *
+ * This function does all the work.
+ *
+ * @access public
+ * @return bool
+ */
+ function run()
+ {
+ // Do we even have any data to process? Mm?
+ if (count($_POST) == 0 OR count($this->_rules) == 0)
+ {
+ return FALSE;
+ }
+
+ // Load the language file containing error messages
+ $this->CI->lang->load('validation');
+
+ // Cycle through the rules and test for errors
+ foreach ($this->_rules as $field => $rules)
+ {
+ //Explode out the rules!
+ $ex = explode('|', $rules);
+
+ // Is the field required? If not, if the field is blank we'll move on to the next text
+ if ( ! in_array('required', $ex, TRUE) AND strpos($rules, 'callback_') === FALSE)
+ {
+ if ( ! isset($_POST[$field]) OR $_POST[$field] == '')
+ {
+ continue;
+ }
+ }
+
+ /*
+ * Are we dealing with an "isset" rule?
+ *
+ * Before going further, we'll see if one of the rules
+ * is to check whether the item is set (typically this
+ * applies only to checkboxes). If so, we'll
+ * test for it here since there's not reason to go
+ * further
+ */
+ if ( ! isset($_POST[$field]))
+ {
+ if (in_array('isset', $ex, TRUE) OR in_array('required', $ex))
+ {
+ if ( ! isset($this->_error_messages['isset']))
+ {
+ if (FALSE === ($line = $this->CI->lang->line('isset')))
+ {
+ $line = 'The field was not set';
+ }
+ }
+ else
+ {
+ $line = $this->_error_messages['isset'];
+ }
+
+ $field = ( ! isset($this->_fields[$field])) ? $field : $this->_fields[$field];
+ $this->_error_array[] = sprintf($line, $field);
+ }
+
+ continue;
+ }
+
+ /*
+ * Set the current field
+ *
+ * The various prepping functions need to know the
+ * current field name so they can do this:
+ *
+ * $_POST[$this->_current_field] == 'bla bla';
+ */
+ $this->_current_field = $field;
+
+ // Cycle through the rules!
+ foreach ($ex As $rule)
+ {
+ // Is the rule a callback?
+ $callback = FALSE;
+ if (substr($rule, 0, 9) == 'callback_')
+ {
+ $rule = substr($rule, 9);
+ $callback = TRUE;
+ }
+
+ // Strip the parameter (if exists) from the rule
+ // Rules can contain a parameter: max_length[5]
+ $param = FALSE;
+ if (preg_match("/(.*?)\[(.*?)\]/", $rule, $match))
+ {
+ $rule = $match[1];
+ $param = $match[2];
+ }
+
+ // Call the function that corresponds to the rule
+ if ($callback === TRUE)
+ {
+ if ( ! method_exists($this->CI, $rule))
+ {
+ continue;
+ }
+
+ $result = $this->CI->$rule($_POST[$field], $param);
+
+ // If the field isn't required and we just processed a callback we'll move on...
+ if ( ! in_array('required', $ex, TRUE) AND $result !== FALSE)
+ {
+ continue 2;
+ }
+
+ }
+ else
+ {
+ if ( ! method_exists($this, $rule))
+ {
+ /*
+ * Run the native PHP function if called for
+ *
+ * If our own wrapper function doesn't exist we see
+ * if a native PHP function does. Users can use
+ * any native PHP function call that has one param.
+ */
+ if (function_exists($rule))
+ {
+ $_POST[$field] = $rule($_POST[$field]);
+ $this->$field = $_POST[$field];
+ }
+
+ continue;
+ }
+
+ $result = $this->$rule($_POST[$field], $param);
+ }
+
+ // Did the rule test negatively? If so, grab the error.
+ if ($result === FALSE)
+ {
+ if ( ! isset($this->_error_messages[$rule]))
+ {
+ if (FALSE === ($line = $this->CI->lang->line($rule)))
+ {
+ $line = 'Unable to access an error message corresponding to your field name.';
+ }
+ }
+ else
+ {
+ $line = $this->_error_messages[$rule];;
+ }
+
+ // Build the error message
+ $mfield = ( ! isset($this->_fields[$field])) ? $field : $this->_fields[$field];
+ $mparam = ( ! isset($this->_fields[$param])) ? $param : $this->_fields[$param];
+ $message = sprintf($line, $mfield, $mparam);
+
+ // Set the error variable. Example: $this->username_error
+ $error = $field.'_error';
+ $this->$error = $this->_error_prefix.$message.$this->_error_suffix;
+
+ // Add the error to the error array
+ $this->_error_array[] = $message;
+ continue 2;
+ }
+ }
+
+ }
+
+ $total_errors = count($this->_error_array);
+
+ /*
+ * Recompile the class variables
+ *
+ * If any prepping functions were called the $_POST data
+ * might now be different then the corresponding class
+ * variables so we'll set them anew.
+ */
+ if ($total_errors > 0)
+ {
+ $this->_safe_form_data = TRUE;
+ }
+
+ $this->set_fields();
+
+ // Did we end up with any errors?
+ if ($total_errors == 0)
+ {
+ return TRUE;
+ }
+
+ // Generate the error string
+ foreach ($this->_error_array as $val)
+ {
+ $this->error_string .= $this->_error_prefix.$val.$this->_error_suffix."\n";
+ }
+
+ return FALSE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Required
+ *
+ * @access public
+ * @param string
+ * @return bool
+ */
+ function required($str)
+ {
+ if ( ! is_array($str))
+ {
+ return (trim($str) == '') ? FALSE : TRUE;
+ }
+ else
+ {
+ return ( ! empty($str));
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Match one field to another
+ *
+ * @access public
+ * @param string
+ * @return bool
+ */
+ function matches($str, $field)
+ {
+ if ( ! isset($_POST[$field]))
+ {
+ return FALSE;
+ }
+
+ return ($str !== $_POST[$field]) ? FALSE : TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Minimum Length
+ *
+ * @access public
+ * @param string
+ * @return bool
+ */
+ function min_length($str, $val)
+ {
+ if ( ! is_numeric($val))
+ {
+ return FALSE;
+ }
+
+ return (strlen($str) < $val) ? FALSE : TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Max Length
+ *
+ * @access public
+ * @param string
+ * @return bool
+ */
+ function max_length($str, $val)
+ {
+ if ( ! is_numeric($val))
+ {
+ return FALSE;
+ }
+
+ return (strlen($str) > $val) ? FALSE : TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Exact Length
+ *
+ * @access public
+ * @param string
+ * @return bool
+ */
+ function exact_length($str, $val)
+ {
+ if ( ! is_numeric($val))
+ {
+ return FALSE;
+ }
+
+ return (strlen($str) != $val) ? FALSE : TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Valid Email
+ *
+ * @access public
+ * @param string
+ * @return bool
+ */
+ function valid_email($str)
+ {
+ return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Validate IP Address
+ *
+ * @access public
+ * @param string
+ * @return string
+ */
+ function valid_ip($ip)
+ {
+ return ( ! preg_match( "/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/", $ip)) ? FALSE : TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Alpha
+ *
+ * @access public
+ * @param string
+ * @return bool
+ */
+ function alpha($str)
+ {
+ return ( ! preg_match("/^([-a-z])+$/i", $str)) ? FALSE : TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Alpha-numeric
+ *
+ * @access public
+ * @param string
+ * @return bool
+ */
+ function alpha_numeric($str)
+ {
+ return ( ! preg_match("/^([-a-z0-9])+$/i", $str)) ? FALSE : TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Alpha-numeric with underscores and dashes
+ *
+ * @access public
+ * @param string
+ * @return bool
+ */
+ function alpha_dash($str)
+ {
+ return ( ! preg_match("/^([-a-z0-9_-])+$/i", $str)) ? FALSE : TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Numeric
+ *
+ * @access public
+ * @param int
+ * @return bool
+ */
+ function numeric($str)
+ {
+ return ( ! ereg("^[0-9\.]+$", $str)) ? FALSE : TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Is Numeric
+ *
+ * @access public
+ * @param string
+ * @return bool
+ */
+ function is_numeric($str)
+ {
+ return ( ! is_numeric($str)) ? FALSE : TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Set Select
+ *
+ * Enables pull-down lists to be set to the value the user
+ * selected in the event of an error
+ *
+ * @access public
+ * @param string
+ * @param string
+ * @return string
+ */
+ function set_select($field = '', $value = '')
+ {
+ if ($field == '' OR $value == '' OR ! isset($_POST[$field]))
+ {
+ return '';
+ }
+
+ if ($_POST[$field] == $value)
+ {
+ return ' selected="selected"';
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Set Radio
+ *
+ * Enables radio buttons to be set to the value the user
+ * selected in the event of an error
+ *
+ * @access public
+ * @param string
+ * @param string
+ * @return string
+ */
+ function set_radio($field = '', $value = '')
+ {
+ if ($field == '' OR $value == '' OR ! isset($_POST[$field]))
+ {
+ return '';
+ }
+
+ if ($_POST[$field] == $value)
+ {
+ return ' checked="checked"';
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Set Checkbox
+ *
+ * Enables checkboxes to be set to the value the user
+ * selected in the event of an error
+ *
+ * @access public
+ * @param string
+ * @param string
+ * @return string
+ */
+ function set_checkbox($field = '', $value = '')
+ {
+ if ($field == '' OR $value == '' OR ! isset($_POST[$field]))
+ {
+ return '';
+ }
+
+ if ($_POST[$field] == $value)
+ {
+ return ' checked="checked"';
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Prep data for form
+ *
+ * This function allows HTML to be safely shown in a form.
+ * Special characters are converted.
+ *
+ * @access public
+ * @param string
+ * @return string
+ */
+ function prep_for_form($str = '')
+ {
+ if ($this->_safe_form_data == FALSE OR $str == '')
+ {
+ return $str;
+ }
+
+ return str_replace(array("'", '"', '<', '>'), array("&#39;", "&quot;", '&lt;', '&gt;'), stripslashes($str));
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Prep URL
+ *
+ * @access public
+ * @param string
+ * @return string
+ */
+ function prep_url($str = '')
+ {
+ if ($str == 'http://' OR $str == '')
+ {
+ $_POST[$this->_current_field] = '';
+ return;
+ }
+
+ if (substr($str, 0, 7) != 'http://' && substr($str, 0, 8) != 'https://')
+ {
+ $str = 'http://'.$str;
+ }
+
+ $_POST[$this->_current_field] = $str;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Strip Image Tags
+ *
+ * @access public
+ * @param string
+ * @return string
+ */
+ function strip_image_tags($str)
+ {
+ $_POST[$this->_current_field] = $this->input->strip_image_tags($str);
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * XSS Clean
+ *
+ * @access public
+ * @param string
+ * @return string
+ */
+ function xss_clean($str)
+ {
+ $_POST[$this->_current_field] = $this->CI->input->xss_clean($str);
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Convert PHP tags to entities
+ *
+ * @access public
+ * @param string
+ * @return string
+ */
+ function encode_php_tags($str)
+ {
+ $_POST[$this->_current_field] = str_replace(array('<?php', '<?PHP', '<?', '?>'), array('&lt;?php', '&lt;?PHP', '&lt;?', '?&gt;'), $str);
+ }
+
+}
+// END Validation Class
?> \ No newline at end of file