السلام عليكم ورحمة الله وبركاته .......
أقوم حالياُ بتطوير هذا الـ Class والذي يسمح لك بعمل Validate للـ From's Elements والتقليل من جمل الـ IF :
Class name : Form Validator Class
language : PHP
Author: Nezar Fadle
Date: 30 - 06 - 2011
Built in Validation Descriptors
######################################
STRING = STRING
REQ = Required
EQ = Equal
NEQ = Not Equal
MAXLEN = Max Length
EMAIL = EMail
NUMBER = NUMBER
BETWEEN = BETWEEN
GT = Greater than
LT = Less Than
<form method="post" action="">
Name : <input type="text" name="name"><br>
Age : <input type="text" name="age"><br>
<input type="submit" name="submit">
</form>
<?php
Class FormValidator {
private $formsRules ;
private $errorMessages ;
private $formElements ;
function __construct($form) {
$this->formsRules = array() ;
$this->errorMessages = array() ;
$this->formElements = $form ;
// Strings
define ("STRING", "/^[a-zA-Z]+$/") ;
define ("REQ", "") ; // Required
define ("EQ", "") ; // Equal
define ("NEQ", "") ; // Not Equal
define ("MAXLEN", "") ; // Max Length
define ("EMAIL", "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/") ; // EMail
// Numbers
define ("NUMBER", "") ;
define ("BETWEEN", "") ;
define ("GT", "") ; // Greater than
define ("LT", "") ; // Less Than
}
function addRule( $field, $rule, $message ) {
if ( ! array_key_exists( $field, $this->formsRules ) ){
$this->formsRules[$field] = array ();
}
array_push( $this->formsRules[$field] , array (
$rule, $message
));
}
function getErrorMessages () {
return $this->errorMessages ;
}
function validate() {
foreach( $this->formsRules as $field => $value ) {
foreach ( $this->formsRules[$field] as $key => $elements) {
//echo "Field : " . $field ."<br>";
//echo "Rule : " . $elements[0] ."<br>";
//echo "Message : " . $elements[1] . "<br>" ;
//echo "-------------------------------------<br>";
if ( array_key_exists ( $field, $this->formElements )) {
$buffer = explode ( " ", $elements[0] );
if ( defined ( strtoupper ( $buffer[0] ) ) ) {
switch ( strtolower ( $buffer[0] )) {
case "req":
if ( trim( $this->formElements[$field]) == "" ) {
if ( ! array_key_exists( $field, $this->errorMessages )) {
$this->errorMessages[$field] = $elements[1] ;
}
}
break;
case "eq":
if ( $this->formElements[$field] != $buffer[1] ) {
if ( ! array_key_exists( $field, $this->errorMessages )) {
$this->errorMessages[$field] = $elements[1] ;
}
}
break;
case "neq":
if ( $this->formElements[$field] == $buffer[1] ) {
if ( ! array_key_exists( $field, $this->errorMessages )) {
$this->errorMessages[$field] = $elements[1] ;
}
}
break;
case "maxlen":
if ( strlen ( $this->formElements[$field] ) > $buffer[1] ) {
if ( ! array_key_exists( $field, $this->errorMessages )) {
$this->errorMessages[$field] = $elements[1] ;
}
}
break;
// Numbers
case "number":
if ( ! is_numeric( $this->formElements[$field] )) {
if ( ! array_key_exists( $field, $this->errorMessages )) {
$this->errorMessages[$field] = $elements[1] ;
}
}
break;
case "between" :
if ( $this->formElements[$field] < $buffer[1] || $this->formElements[$field] > $buffer[2] ){
if ( ! array_key_exists( $field, $this->errorMessages )) {
$this->errorMessages[$field] = $elements[1] ;
}
}
break;
case "gt" :
if ( $this->formElements[$field] < $buffer[1] ) {
if ( ! array_key_exists( $field, $this->errorMessages )) {
$this->errorMessages[$field] = $elements[1] ;
}
}
break;
case "lt" :
if ( $this->formElements[$field] > $buffer[1] || trim ( $this->formElements[$field] ) == "" ){
if ( ! array_key_exists( $field, $this->errorMessages )) {
$this->errorMessages[$field] = $elements[1] ;
}
}
break;
default :
if ( ! preg_match ( constant ( strtoupper($buffer[0]) ) , $this->formElements[$field] ) ){
if ( ! array_key_exists( $field, $this->errorMessages )) {
$this->errorMessages[$field] = $elements[1] ;
}
}
}
}else {
if ( ! preg_match ( $elements[0] , $this->formElements[$field] ) ) {
if ( ! array_key_exists( $field, $this->errorMessages )) {
$this->errorMessages[$field] = $elements[1] ;
}
}
}
}
}
}
if ( count ( $this->errorMessages ) <= 0 ) {
return true ;
}else {
return false ;
}
}
}
$v = new FormValidator( $_POST ) ;
$v->addRule("name", "req", "Name must be lowercase string and less than 10 Char" );
$v->addRule("name", "string", "Name must be lowercase string and less than 10 Char" );
$v->addRule("name", "maxlen 10", "Name must be lowercase string and less than 10 Char" );
$v->addRule("age", "number", "Age must be Number and between 20 & 30" ); // numbers
$v->addRule("age", "between 20 30", "Age must be Number and between 20 & 30" ); // numbers
if ( isset ($_POST['submit'] ) )
if ( $v->validate() ) {
echo "You can save your form";
}else {
echo "<h3>Missing Values</h3>";
echo "<ul>";
foreach( $v->getErrorMessages() as $error ){
echo "<li>" . $error ;
}
echo "</ul>";
}
?>