1. <?php
  2. /**
  3. * Sanity checks for query string parameters.
  4. * Primarily for non-production environments.
  5. *
  6. * @param array $query_string Array of query string parameters.
  7. * @param array $required_params Array of required parameters.
  8. * @param array $optional_params Array of optional parameters with default values.
  9. * @return bool True if all checks pass, false otherwise.
  10. */
  11. function sanitizeQueryString(array $query_string, array $required_params, array $optional_params = []): bool
  12. {
  13. // Check for required parameters
  14. foreach ($required_params as $param) {
  15. if (!isset($query_string[$param]) || empty($query_string[$param])) {
  16. error_log("Missing required parameter: " . $param); //Log error
  17. return false;
  18. }
  19. }
  20. // Check for optional parameters with default values
  21. foreach ($optional_params as $param => $default_value) {
  22. if (isset($query_string[$param]) && !empty($query_string[$param])) {
  23. //Basic sanity check. Can add more complex checks here.
  24. if (!is_string($query_string[$param])) {
  25. error_log("Invalid type for optional parameter: " . $param . ". Expected string.");
  26. return false;
  27. }
  28. }
  29. }
  30. return true;
  31. }
  32. //Example Usage:
  33. /*
  34. $query_string = [
  35. 'page' => 'home',
  36. 'sort' => 'name',
  37. 'limit' => '10'
  38. ];
  39. $required_params = ['page', 'sort'];
  40. $optional_params = ['limit' => 20, 'order' => 'asc'];
  41. if (sanitizeQueryString($query_string, $required_params, $optional_params)) {
  42. echo "Query string is valid.\n";
  43. } else {
  44. echo "Query string is invalid.\n";
  45. }
  46. */
  47. ?>

Add your comment