<?php
/**
* Prepares API payloads with basic input validation for a one-off script.
*
* @param array $data The input data array.
* @return array|false The validated data array if valid, false otherwise.
*/
function prepareApiPayload(array $data): array|false
{
// Initialize an empty array to store validated data
$validatedData = [];
// Validate and sanitize each field
if (isset($data['name'])) {
$validatedData['name'] = trim(filter_var($data['name'], FILTER_SANITIZE_STRING)); // Sanitize and trim
if (empty($validatedData['name'])) {
error_log("Error: Name cannot be empty.");
return false;
}
}
if (isset($data['email'])) {
$email = filter_var($data['email'], FILTER_VALIDATE_EMAIL); // Validate email format
if ($email === false) {
error_log("Error: Invalid email format.");
return false;
}
$validatedData['email'] = trim($email); // Trim whitespace
}
if (isset($data['age'])) {
$age = filter_var($data['age'], FILTER_VALIDATE_INT); // Validate integer
if ($age === false || $age < 0 || $age > 120) {
error_log("Error: Age must be a valid integer between 0 and 120.");
return false;
}
$validatedData['age'] = (int) $age; // Cast to integer
}
// Add other fields with similar validation logic here...
return $validatedData;
}
// Example usage (for testing)
/*
$inputData = [
'name' => ' John Doe ',
'email' => 'john.doe@example.com',
'age' => '30',
];
$payload = prepareApiPayload($inputData);
if ($payload !== false) {
print_r($payload);
} else {
echo "Invalid input data.";
}
*/
?>
Add your comment