<?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);