PHP Classes

PHP Validator: Validate request values with given rules

Recommend this page to a friend!
  Info   Example   Screenshots   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2024-06-15 (9 months ago) RSS 2.0 feedNot enough user ratingsTotal: 208 All time: 8,394 This week: 36Up
Version License PHP version Categories
php-validator 1.7MIT/X Consortium ...5.4PHP 5, Databases, Validation
Description 

Author

This class can validate request values with given rules.

It can take an array of POST or GET request values and validate against a list of given rules.

If the validation fails, the class returns a list of error objects that can return the error details for each of the request value.

Currently the class supports validating values with rules that check required values, minimum and maximum length, email addresses, url, ip address, letters and digits, numbers, regular expression, unique value database field.

Picture of Ravi Kumar
  Performance   Level  
Innovation award
Innovation award
Nominee: 2x

 

Example

<?php

/**
 * This file is only used for demo purpose.
 *
 * @package Validator
 * @author Ravi Kumar
 * @version 0.1.0
 * @copyright Copyright (c) 2014, Ravi Kumar
 * @license https://github.com/ravikumar8/PHP-Validator/blob/master/LICENSE MIT
 **/

require_once 'classes/Database.php';
require_once
'classes/ErrorHandler.php';
require_once
'classes/Validator.php';

$db = new Database;
$errorHandler = new ErrorHandler;
$errosHtml = '';

if(!empty(
$_POST)) {

   
$validator = new Validator($db, $errorHandler);

   
$validation = $validator->check($_POST, [
       
'username' => [
           
'required' => true,
           
'maxlength' => 20,
           
'minlength' => 3,
           
'alnum' => true,
           
'unique' => 'users'
       
],
       
'email' => [
           
'required' => true,
           
'maxlength' => 255,
           
'email' => true,
           
'unique' => 'users'
       
],
       
'password' => [
           
'required' => true,
           
'minlength' => 7
       
],
       
'password_again' => [
           
'matches' => 'password'
       
]
    ]);
   
    if(
$validation->fails() ) {

       
//echo '<pre>', print_r( $validation, 1 ), '</pre>';

       
if( $validation->errors()->hasErrors('username') ) {
           
$errosHtml = '<li>' . implode( '</li><li>' , $validation->errors()->all('username') ) . '</li>';
        }
        if(
$validation->errors()->hasErrors('email') ) {
           
$errosHtml .= '<li>' . implode( '</li><li>' , $validation->errors()->all('email') ) . '</li>';
        }
        if(
$validation->errors()->hasErrors('password') ) {
           
$errosHtml .= '<li>' . implode( '</li><li>' , $validation->errors()->all('password') ) . '</li>';
        }
        if(
$validation->errors()->hasErrors('password_again') ) {
           
$errosHtml .= '<li>' . implode( '</li><li>' , $validation->errors()->all('password_again') ) . '</li>';
        }
    }
}
?>
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Validation</title>
    <link rel="stylesheet" href="assets/css/main.css">
</head>
<body>

    <div class="container">
        <?php if( $errosHtml ) { ?>
<ul class="alert error">
                <?php echo $errosHtml; ?>
</ul>
        <?php } ?>
<form action="index.php" method="post" auto-fill="off">
            <ul>
            <li>Username:<input type="text" name="username" value="<?php echo isset($_POST['username']) ? $_POST['username'] : ''; ?>"></li>
            <li>Email:<input type="email" name="email" value="<?php echo isset($_POST['email']) ? $_POST['email'] : ''; ?>"></li>
            <li>Password:<input type="password" name="password"></li>
            <li>Password again:<input type="password" name="password_again"></li>
            <li><input type="submit" class="btn"></li>
            </ul>
        </form>
    </div>
</body>
</html>


Details

PHP Validator

Validator class to validate form post values in a simple way.

Usage


require_once 'classes/Database.php';
require_once 'classes/ErrorHandler.php';
require_once 'classes/Validator.php';

$db             =   new Database;
$errorHandler   =   new ErrorHandler;
$errosHtml      =   '';

if(!empty($_POST))  {

    $validator = new Validator($db, $errorHandler);

    $validation = $validator->check($_POST, [
        'username'  =>  [
            'required'  =>  true,
            'maxlength' =>  20,
            'minlength' =>  3,
            'alnum'     =>  true,
            'unique'    =>  'users'
        ],
        'email' =>  [
            'required'  =>  true,
            'maxlength' =>  255,
            'email'     =>  true,
            'unique'    =>  'users'
        ],
        'password'  =>  [
            'required'  =>  true,
            'minlength' =>  7
        ],
        'password_again'    =>  [
            'matches'   =>  'password'
        ]       
    ]);
    
    if( $validation->fails() )  {

        //echo '<pre>', print_r( $validation, 1 ), '</pre>';

        if( $validation->errors()->hasErrors('username') )  {
            $errosHtml  = '<li>' .  implode( '</li><li>' ,  $validation->errors()->all('username') ) . '</li>'; 
        }
        if( $validation->errors()->hasErrors('email') ) {
            $errosHtml  .= '<li>' .  implode( '</li><li>' ,  $validation->errors()->all('email') ) . '</li>';   
        }
        if( $validation->errors()->hasErrors('password') )  {       
            $errosHtml  .= '<li>' .  implode( '</li><li>' ,  $validation->errors()->all('password') ) . '</li>';    
        }
        if( $validation->errors()->hasErrors('password_again') )    {       
            $errosHtml  .= '<li>' .  implode( '</li><li>' ,  $validation->errors()->all('password_again') ) . '</li>';  
        }       
    }
}

<?php if( $errosHtml )  { ?>
    <ul class="alert error">
        <?php echo $errosHtml; ?>
    </ul>       
<?php } ?>

Rules

* __required__: Returns FALSE if the form element is empty. * __minlength__: Returns FALSE if the form element is shorter then the parameter value. minlength=>6 * __maxlength__: Returns FALSE if the form element is longer then the parameter value. maxlength=>10 * __email__: Returns FALSE if the form element does not contain a valid email address. * __activeemail__: Returns FALSE if the form element does not contain a valid and active email address. * __url__: Returns FALSE if the form element does not contain a valid url address. * __activeurl__: Returns FALSE if the form element does not contain a valid and active url address. * __ip__: Returns FALSE if the supplied IP is not valid. * __alpha__: Returns FALSE if the form element contains anything other than alphabetical characters. * __alphaupper__: Returns FALSE if the form element contains anything other than upper alphabetical characters. * __alphalower__: Returns FALSE if the form element contains anything other than lower alphabetical characters. * __alphadash__: Returns FALSE if the form element contains anything other than alpha-numeric characters, underscores or dashes. * __alphanum__: Returns FALSE if the form element contains anything other than alpha-numeric characters. * __hexadecimal__: Returns FALSE if the form element contains anything other than hexadecimal characters. * __numeric__: Returns FALSE if the form element contains anything other than numeric characters. * __matches__: Returns FALSE if the form element does not match the one in the parameter. matches[form_item] * __unique__: Returns FALSE if the form element is not unique to the table and field name in the parameter. unique[field]

Based on Alex Garrett work http://bit.ly/1oO8Yxn

License

Released under the MIT license<br> Copyright (c) 2014 Ravi Kumar


Screenshots (2)  
  • Screenshot.png
  • With_Error.png
  Files folder image Files (29)  
File Role Description
Files folder imageassets (3 directories)
Files folder imageclasses (3 files)
Accessible without login Plain text file index.php Example Example script
Accessible without login Plain text file LICENSE Data Auxiliary data
Accessible without login Plain text file README.md Doc. Auxiliary data

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads Download Rankings  
 93%
Total:208
This week:0
All time:8,394
This week:36Up