[ create a new paste ] login | about

Link: http://codepad.org/8FR9HLTf    [ raw code | output | fork ]

PHP, pasted on Jul 31:
<?php

$allowedFields = array(
    'firstname',
    'lastname',
    'email',
    'phone',
    'agree',
    'newsletter',
    'topic',
);

$requiredFields = array(
    'firstname' => 'First name is required.',
    'lastname' => 'Last name is required.',
    'email' => 'Email address is required.',
    'phone' => 'Phone number is required.',
    'agree' => 'You must agree with our policy.',
);

$errors = array();

// fetch required data
$requiredData = array_intersect_key( $_POST, $requiredFields );

// run checks ( complete ? solid ? )
$isCompleteRequest = array_keys($requiredData) === array_keys($requiredFields);
$isSolidRequest = array_keys($_POST) === array_keys($allowedFields);

if ( $isCompleteRequest && $isSolidRequest ) {

    // shift _POST fields to current scope
    extract($requiredData, EXTR_SKIP);

}
else {
    
    // general validation failed, pull errors
    $errors = array_diff_key( $requiredFields, $requiredData );
 
    // add general Errors
    if ( !$isSolidRequest ) {
        $errors[] = 'The last request contains unwanted fields.';
    }
    
}

var_dump($errors);


Output:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
array(6) {
  ["firstname"]=>
  string(23) "First name is required."
  ["lastname"]=>
  string(22) "Last name is required."
  ["email"]=>
  string(26) "Email address is required."
  ["phone"]=>
  string(25) "Phone number is required."
  ["agree"]=>
  string(31) "You must agree with our policy."
  [0]=>
  string(42) "The last request contains unwanted fields."
}


Create a new paste based on this one


Comments: