ОСНОВНОЙ ВОПРОС
Почему плохая идея использовать $ _ REQUEST , $ _ POST или $ _ GET напрямую?
Описание проблемы
Основываясь на других плагинах и объяснениях на сайте php, я использовал глобальную переменную $ _ REQUEST для обработки запроса от внешнего интерфейса:
// Create Menu Settings
if ( isset( $_REQUEST['create_menu'] ) ) {
// Check, if valid
if ( $this->is_request_valid($_REQUEST, 'Menu and Catergories not refreshed.') ) {
}
}
Но следующая подсказка IDE Neatbeans говорит, что я должен учитывать filter_input () или как _ * ( ) функция:
Прежде всего, я попытался напрямую заменить глобальную переменную $ _ REQUEST с $ _ POST или $ _ GET , как показано в примере с наибольшим количеством голосов на сайте, например:
if(isset($_GET["a"])) echo "a is set\n";
Но в этом случае я также см. подсказку Netbeans.
Поэтому я искал фильтр данных do c about php и также нашел описание W3Schools . В примере W3Schools также напрямую проверяется с помощью "isset ()":
if (isset($_GET["email"])) {
if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL) === false) {
echo("Email is valid");
} else {
echo("Email is not valid");
}
}
Думаю, лучшим примером является this .
Вопросы
Итак, но могу ли я найти так много других примеров без фильтрации?
Почему использовать $ _ REQUEST , * - плохая идея 1068 * $ _ POST или $ _ GET напрямую?
Если я использую проверку, предложенную в последнем примере, следует ли мне дополнительно проверить новую переменную, например:
$a = filter_input(INPUT_GET, 'a');
if(isset($a))
{
// Do something
}
Извините за длинный пост и спасибо за поддержку.
РЕДАКТИРОВАТЬ
Не видел этот связанный пост раньше в списке выбора:
Do-not-access-superglobal-request-array-direct-netbeans-8-0- php
(Dev) Среда:
PHP Версия 7.4.4
IDE: Apache IDE NetBeans 11.3
ОС: Windows