Как применить filter_input к суперглобалам

В соответствии с IDE netbeans мне нужно добавить какой-то фильтр к суперглобальным переменным, filter_input(), предложенный netbeans, для кода ниже

$page = (isset($_GET['p']) && !empty($_GET['p'])) ? $_GET['p']: 'home';

После исследования я нашел этот пример в stackoverflow

$name = ($name = filter_input(INPUT_GET, 'name')) ? $name : 'default_value';

Но я не понимаю, как применить это к приведенному выше коду.

Исходный код, на всякий случай, если вам нужно посмотреть.

$page = (isset($_GET['p']) && !empty($_GET['p'])) ? $_GET['p']: 'home';
$page = htmlspecialchars($page, ENT_QUOTES, 'UTF-8');
$page = preg_replace('/[^-a-zA-Z0-9_]/', '', $page);

person Daksh B    schedule 07.06.2015    source источник


Ответы (1)


Среда IDE Netbeans пытается обезопасить вас при обработке переменных для GLOBALS. Поскольку они могут быть установлены неизвестными источниками, вам нужно попытаться проверить или очистить их при применении к переменной. Существует несколько методов, облегчающих вашу жизнь здесь (например, вы потенциально можете использовать FILTER_SANITIZE_FULL_SPECIAL_CHARS вместо второй строки кода.) Поскольку вы выполняете функцию preg_replace на своем $page, я бы сказал, что довольно безопасно оставить как есть, хотя, если вы хотите удалить предупреждение, это должно работать , но он функционально идентичен. Дополнительную информацию см. в этом сообщении.

$page = ($page = filter_input(INPUT_GET, 'p')) ? $page : 'home';
$page = htmlspecialchars($page, ENT_QUOTES, 'UTF-8');
$page = preg_replace('/[^-a-zA-Z0-9_]/', '', $page);
person Goodbye StackExchange    schedule 07.06.2015