193 lines
5.5 KiB
PHP
193 lines
5.5 KiB
PHP
|
<?php
|
||
|
|
||
|
/**************************************/
|
||
|
/**** SuperSmash Framework ****/
|
||
|
/**** Created By SuperSmash ****/
|
||
|
/**** Started on: 25-04-2012 ****/
|
||
|
/**************************************/
|
||
|
|
||
|
namespace system\library;
|
||
|
|
||
|
if (!defined("SUPERSMASH_FRAMEWORK")){die("You cannot access this page directly!");}
|
||
|
|
||
|
class Validation
|
||
|
{
|
||
|
// Our fields
|
||
|
protected $fields;
|
||
|
|
||
|
// Our field rules
|
||
|
protected $field_rules;
|
||
|
|
||
|
// A bool of whether we are debugging
|
||
|
protected $debug;
|
||
|
|
||
|
// Our running list of errors
|
||
|
protected $errors;
|
||
|
|
||
|
// Create the constructor
|
||
|
public function __construct()
|
||
|
{
|
||
|
// Init the default values
|
||
|
$this->fields = $_POST;
|
||
|
$this->field_rules = array();
|
||
|
$this->errors = array();
|
||
|
}
|
||
|
|
||
|
// This function is used to set the rules of certain $_POST vars
|
||
|
public function set($rules)
|
||
|
{
|
||
|
if(!is_array($rules))
|
||
|
{
|
||
|
showError('no_array', array('rules', 'Validation::set'), E_ERROR);
|
||
|
}
|
||
|
|
||
|
// Add the current rules
|
||
|
$this->field_rules = array_merge($this->field_rules, $rules);
|
||
|
|
||
|
// Allow chaining here
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
// This function validates all the POST data that has rules set
|
||
|
public function validate($debug = false)
|
||
|
{
|
||
|
// before we begin, make sure we have post data
|
||
|
if(!empty($this->field_rules))
|
||
|
{
|
||
|
// Set our debugging
|
||
|
$this->debug = $debug;
|
||
|
|
||
|
// Validate each of the fields that have rules
|
||
|
foreach($this->field_rules as $field => $rules)
|
||
|
{
|
||
|
// Get our array of rules to process
|
||
|
$rules = explode('|', $rules);
|
||
|
|
||
|
// Make sure that the field we are looking at exists
|
||
|
if(isset($this->fields[$field]))
|
||
|
{
|
||
|
// Process each rule for this post var
|
||
|
foreach($rules as $rule)
|
||
|
{
|
||
|
$result = null;
|
||
|
|
||
|
// We will define the param as false, if preg_match
|
||
|
// finds a second value, then it will overwrite this
|
||
|
$param = false;
|
||
|
|
||
|
if (preg_match("/^(.*?)\[(.*?)\]$/", $rule, $match))
|
||
|
{
|
||
|
$rule = $match[1];
|
||
|
$param = $match[2];
|
||
|
}
|
||
|
|
||
|
// Call the function that corresponds to the rule
|
||
|
if (!empty($rule))
|
||
|
{
|
||
|
$result = $this->$rule($this->fields[$field], $param);
|
||
|
}
|
||
|
|
||
|
// Handle errors
|
||
|
if ($result === false)
|
||
|
{
|
||
|
$this->set_error($field, $rule);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return (empty($this->errors));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// This function returns an array of all the errors by field name
|
||
|
public function get_errors() {
|
||
|
if(count($this->errors) == 0)
|
||
|
{
|
||
|
return array();
|
||
|
}
|
||
|
return $this->errors;
|
||
|
}
|
||
|
|
||
|
// This function sets an error for the $field
|
||
|
protected function set_error($field, $rule)
|
||
|
{
|
||
|
// If debugging, we want an array of all failed validations
|
||
|
if($this->debug)
|
||
|
{
|
||
|
if(isset($this->errors[$field]))
|
||
|
{
|
||
|
$this->errors[$field] .= "|".$rule;
|
||
|
return;
|
||
|
}
|
||
|
$this->errors[$field] = $rule;
|
||
|
return;
|
||
|
}
|
||
|
$this->errors[$field] = true;
|
||
|
}
|
||
|
|
||
|
// This function determines if the string passed has any values
|
||
|
public function required($string, $value = false)
|
||
|
{
|
||
|
if (!is_array($string))
|
||
|
{
|
||
|
// Trim white space and see if its still empty
|
||
|
$string = trim($string);
|
||
|
}
|
||
|
return (!empty($string));
|
||
|
}
|
||
|
|
||
|
// This function determines if the string is a valid email
|
||
|
public function email($string)
|
||
|
{
|
||
|
if(filter_var($string, FILTER_VALIDATE_EMAIL))
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
// This function determines if the string passed is numeric
|
||
|
public function number($string)
|
||
|
{
|
||
|
return (is_numeric($string));
|
||
|
}
|
||
|
|
||
|
// This function determines if the string passed is valid URL
|
||
|
public function url($string)
|
||
|
{
|
||
|
return (!preg_match('@^(mailto|ftp|http(s)?)://(.*)$@i', $string)) ? false : true;
|
||
|
}
|
||
|
|
||
|
// This function determines if the string passed is a float
|
||
|
public function float($string)
|
||
|
{
|
||
|
return (is_float($string));
|
||
|
}
|
||
|
|
||
|
// This function determines if the string passed has a minimum value of $value
|
||
|
public function min($string, $value)
|
||
|
{
|
||
|
if(!is_numeric($string))
|
||
|
{
|
||
|
return (strlen($string) >= $value);
|
||
|
}
|
||
|
return ($string >= $value);
|
||
|
}
|
||
|
|
||
|
// This function determines if the string passed has a maximum value of $value
|
||
|
public function max($string, $value)
|
||
|
{
|
||
|
if(!is_numeric($string))
|
||
|
{
|
||
|
return (strlen($string) <= $value);
|
||
|
}
|
||
|
return ($string <= $value);
|
||
|
}
|
||
|
|
||
|
// This function determines if the string passed contains the specified pattern
|
||
|
public function pattern($string, $pattern)
|
||
|
{
|
||
|
return (!preg_match("/".$pattern."/", $string)) ? false : true;
|
||
|
}
|
||
|
}
|
||
|
?>
|