ekozan
09/06/2012, 18h54
Bonjour a tous
je suis actuellement entrain d’écrire une classe de validation des champs d'un formulaire et j'ai décidé de vous la donner. elle n'est pas fini mais actuellement elle répond déjà à mes besoin si quelqu'un vois des améliorations à y apporter.
je suis preneur
Faite en bon usage
pour l'utilisation
je suis actuellement entrain d’écrire une classe de validation des champs d'un formulaire et j'ai décidé de vous la donner. elle n'est pas fini mais actuellement elle répond déjà à mes besoin si quelqu'un vois des améliorations à y apporter.
je suis preneur
Faite en bon usage
Code PHP:
namespace Library\Validator {
class Form {
private $_data = array();
private $_errors = array();
private $_validates = array();
private $_formVariables = array();
public function __construct($methode = 'POST') {
$this->_getForm(strtoupper($methode));
}
private function _getForm($methode) {
if ($methode == 'POST')
$this->_formVariables = $_POST;
elseif ($methode == 'GET')
$this->_formVariables = $_GET;
}
public function addValidation($name, $arg) {
$arg = explode('=', $arg);
$tmp = new \stdClass;
$tmp->name = $name;
$tmp->type = $arg[0];
$tmp->option = isset($arg[1]) ? $arg[1] : FALSE;
array_push($this->_data, $tmp);
unset($tmp);
}
public function ValidateForm() {
foreach ($this->_data as $d) {
$input_value = empty($this->_formVariables[$d->name]) ? FALSE : $this->_formVariables[$d->name];
if ($d->type == 'isSame')
$d->option = empty($this->_formVariables[$d->option]) ? FALSE : $this->_formVariables[$d->option];
$result = $this->_validrooter($d->type, $input_value, $d->option);
if ($result) {
if (!array_key_exists($d->name, $this->_errors))
$this->_validates[$d->name] = $input_value;
} elseif ($result != 'skip') {
if (!array_key_exists($d->name, $this->_validates))
unset($this->_validates[$d->name]);
if (isset($this->_errors[$d->name]))
$this->_errors[$d->name][] = $d->type;
else
$this->_errors[$d->name] = array($d->type);
}
}
if (count($this->_errors) != 0)
return FALSE;
return TRUE;
}
private function _validrooter($type, $input_value, $option) {
switch ($type) {
case 'req' :
return $this->_validREQ($input_value);
break;
case 'email':
return $this->_validEMAIL($input_value);
break;
case 'phone':
return $this->_validPHONE($input_value);
break;
case 'maxlen':
return $this->_validMAXLEN($input_value, $option);
break;
case 'minlen':
return $this->_validMINLEN($input_value, $option);
break;
case 'alnum':
return $this->_validSTR('/^([a-zA-Z0-9])+$/', $input_value);
break;
case 'alnum_s':
return $this->_validSTR('/^([a-zA-Z0-9 _-])+$/', $input_value);
break;
case 'num':
return $this->_validSTR('/^([0-9])+$/', $input_value);
break;
case 'alpha':
return $this->_validSTR('/^([a-zA-Z])+$/', $input_value);
break;
case 'alpha_s':
return $this->_validSTR('/^([a-zA-Z _-])+$/', $input_value);
break;
case 'lessthan':
case 'lt':
return $this->_validLT($input_value, $option);
break;
case 'gt':
case 'greaterthan':
return $this->_validGT($input_value, $option);
break;
case 'regexp':
return $this->_validSTR($option, $input_value);
break;
case 'is':
case 'isSame':
return $this->_validIS($input_value, $option);
break;
}
}
private function _validREQ($input_value) {
if (!isset($input_value) OR strlen($input_value) <= 0)
return FALSE;
return TRUE;
}
private function _validEMAIL($input_value) {
if (empty($input_value))
return 'skip';
if (!preg_match('/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/', $input_value))
return FALSE;
return TRUE;
}
private function _validPHONE($input_value) {
if (empty($input_value))
return 'skip';
if (!preg_match('/^[0-9]{6}$/', $input_value))
return FALSE;
return TRUE;
}
private function _validIS($input_value, $input_value2) {
if (empty($input_value))
return 'skip';
if ($input_value != $input_value2)
return FALSE;
return TRUE;
}
private function _validMAXLEN($input_value, $maxlen) {
if (empty($input_value))
return 'skip';
if (strlen($input_value) > $maxlen)
return FALSE;
return TRUE;
}
private function _validMINLEN($input_value, $minlen) {
if (empty($input_value))
return 'skip';
if (strlen($input_value) < $minlen)
return FALSE;
return TRUE;
}
private function _validLT($input_value, $value) {
if (empty($input_value))
return 'skip';
if ($input_value < $value)
return TRUE;
return FALSE;
}
private function _validGT($input_value, $value) {
if (empty($input_value))
return 'skip';
if ($input_value > $value)
return TRUE;
return FALSE;
}
private function _validSTR($regex, $input_value) {
if (empty($input_value))
return 'skip';
if (!preg_match($regex, $input_value))
return FALSE;
return TRUE;
}
public function GetErrors() {
return $this->_errors;
}
public function GetValidates() {
return $this->_validates;
}
}
}
?>
pour l'utilisation
Code PHP:
$formvalidator = new \Library\Validator\Form();
$formvalidator->addValidation('pseudo', 'req');
$formvalidator->addValidation('pseudo', 'minlen=3');
$formvalidator->addValidation('pseudo', 'maxlen=10');
$formvalidator->addValidation('pseudo', 'regexp=/^[a-zA-Z]([a-zA-Z0-9])+$/');
$formvalidator->addValidation('email', 'req');
$formvalidator->addValidation('email', 'email');
$formvalidator->addValidation('pwd', 'req');
$formvalidator->addValidation('pwd', 'minlen=6');
$formvalidator->addValidation('rpwd', 'req');
$formvalidator->addValidation('rpwd', 'isSame=pwd');
$formvalidator->addValidation('captcha', 'req');
$captcha = isset($_SESSION['captcha']) ? $_SESSION['captcha'] : 'FALSE';
$formvalidator->addValidation('captcha', 'is=' . $captcha);
if ($formvalidator->ValidateForm()) {
echo 'ok';
} else {
echo 'pasok';
$erreurs = $formvalidator->GetErrors();
$validinput = $formvalidator->GetValidates();
}