<?php
/**
* Sanity checks for query string parameters.
* Primarily for non-production environments.
*
* @param array $query_string Array of query string parameters.
* @param array $required_params Array of required parameters.
* @param array $optional_params Array of optional parameters with default values.
* @return bool True if all checks pass, false otherwise.
*/
function sanitizeQueryString(array $query_string, array $required_params, array $optional_params = []): bool
{
// Check for required parameters
foreach ($required_params as $param) {
if (!isset($query_string[$param]) || empty($query_string[$param])) {
error_log("Missing required parameter: " . $param); //Log error
return false;
}
}
// Check for optional parameters with default values
foreach ($optional_params as $param => $default_value) {
if (isset($query_string[$param]) && !empty($query_string[$param])) {
//Basic sanity check. Can add more complex checks here.
if (!is_string($query_string[$param])) {
error_log("Invalid type for optional parameter: " . $param . ". Expected string.");
return false;
}
}
}
return true;
}
//Example Usage:
/*
$query_string = [
'page' => 'home',
'sort' => 'name',
'limit' => '10'
];
$required_params = ['page', 'sort'];
$optional_params = ['limit' => 20, 'order' => 'asc'];
if (sanitizeQueryString($query_string, $required_params, $optional_params)) {
echo "Query string is valid.\n";
} else {
echo "Query string is invalid.\n";
}
*/
?>
Add your comment