Я создал следующий код, чтобы лучше понять фильтры php.
Это в основном проверяет 2 конкретных параметра url год и неделю по 2 целочисленным фильтрам.
Дело в том, что он не уведомляет вас о том, какие параметры были правильно введены в НО, но были найдены вне диапазона. В настоящее время это ВСЕ или НИЧЕГО; Я не могу сказать пользователю, ЧТО конкретно пошло не так.
Показанное var_dump($result)
возвращает это:
array(2) {
["year"]=> int(2019)
["week"]=> bool(false)
}
Может кто-нибудь показать мне, как создать это уведомление?
Вот код. Помните, что для того, чтобы проверить это, вы должны сделать это в своей локальной среде разработчика.
/*
URL Samples to try
code.php - ERROR
code.php? - ERROR
code.php?year=2018&week=0 - OUT OF RANGE
code.php?year=2018&week=1 - OUT OF RANGE
code.php?year=2019&week=1 - IN RANGE
code.php?year=2019&week=52 - IN RANGE
code.php?year=2019&week=0 - OUT OF RANGE
code.php?year=2019&week=53 - OUT OF RANGE
code.php?year=2026&week=1 - OUT OF RANGE
code.php?year=2026&week=52 - OUT OF RANGE
*/
// Custom URL PHP filters
$filters = [
'year' => [ 'filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 2019, 'max_range' => 2025] ],
'week' => [ 'filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 1, 'max_range' => 52 ] ]
];
/* Begin validation(s)... */
// At least 1 URL parameter is required.
if (!is_null($result = filter_input_array(INPUT_GET, $filters))) {
// If we made it this far...
// Search result array for any keys containing null or false
if(!in_array(null || false, $result)) {
// If all key/value pairs from array $filters validated successfuly...
echo 'Status: Validation success.<br>';
echo 'Reason: All URL parameters decleared in $filters are present';
echo '<br>';
echo 'and have been validated against their respective filters.';
echo '<br><br>';
echo '<hr>';
echo '<strong>$result</strong> output';
echo '<br><br>';
echo 'print_r:<br>';
print_r($result);
echo '<br><br>';
echo 'var_dump:<br>';
var_dump($result);
// Inner IF
} else {
// If even 1 array key is found to contain a null or false value...
echo 'Status: Validation failed.<br>';
echo 'Reason: Corrupted url pars or One or more null or false values found.';
echo '<br><br>';
echo '<hr>';
echo '<strong>$result</strong> output';
echo '<br><br>';
echo 'print_r:<br>';
print_r($result);
echo '<br><br>';
echo 'var_dump:<br>';
var_dump($result); ////// Output from this call is shown above
}
// Outter IF
} else {
echo 'Status: URL failed.';
echo '<br>';
echo 'Reason: At least 1 URL parameter is required.';
echo '<br><br>';
echo 'Sample: <code>code.php<strong>?year=2019&week=52</strong></code>';
echo '<br><br>';
echo '<hr>';
echo '<strong>$result</strong> output';
echo '<br><br>';
echo 'var_dump:<br>';
print_r($result);
echo '<br><br>';
echo 'var_dump:<br>';
var_dump($result);
}