1. <?php
  2. /**
  3. * Prepares API payloads with basic input validation for a one-off script.
  4. *
  5. * @param array $data The input data array.
  6. * @return array|false The validated data array if valid, false otherwise.
  7. */
  8. function prepareApiPayload(array $data): array|false
  9. {
  10. // Initialize an empty array to store validated data
  11. $validatedData = [];
  12. // Validate and sanitize each field
  13. if (isset($data['name'])) {
  14. $validatedData['name'] = trim(filter_var($data['name'], FILTER_SANITIZE_STRING)); // Sanitize and trim
  15. if (empty($validatedData['name'])) {
  16. error_log("Error: Name cannot be empty.");
  17. return false;
  18. }
  19. }
  20. if (isset($data['email'])) {
  21. $email = filter_var($data['email'], FILTER_VALIDATE_EMAIL); // Validate email format
  22. if ($email === false) {
  23. error_log("Error: Invalid email format.");
  24. return false;
  25. }
  26. $validatedData['email'] = trim($email); // Trim whitespace
  27. }
  28. if (isset($data['age'])) {
  29. $age = filter_var($data['age'], FILTER_VALIDATE_INT); // Validate integer
  30. if ($age === false || $age < 0 || $age > 120) {
  31. error_log("Error: Age must be a valid integer between 0 and 120.");
  32. return false;
  33. }
  34. $validatedData['age'] = (int) $age; // Cast to integer
  35. }
  36. // Add other fields with similar validation logic here...
  37. return $validatedData;
  38. }
  39. // Example usage (for testing)
  40. /*
  41. $inputData = [
  42. 'name' => ' John Doe ',
  43. 'email' => 'john.doe@example.com',
  44. 'age' => '30',
  45. ];
  46. $payload = prepareApiPayload($inputData);
  47. if ($payload !== false) {
  48. print_r($payload);
  49. } else {
  50. echo "Invalid input data.";
  51. }
  52. */
  53. ?>

Add your comment