Мне интересно, можно ли получить переменную, находится ли она в POST или GET, а затем использовать filter_input() для ее дезинфекции.Как проверить как данные POST, так и GET при использовании filter_input?
Сначала я думал, что $var = filter_input(INPUT_POST | INPUT_GET, "var", FILTER_SANITIZE_STRING)
может работать, однако это не так, и в руководстве по PHP указано, что вы можете передавать только один тип ввода.
Я также пробовал INPUT_REQUEST
, что странно не сработало. Функция распознает его (т. Е. Не вызывает ошибку, говоря, что я поставил что-то неправильно в $ input), но он не получит никакого кода. И да, я знаю, что не должен использовать INPUT_REQUEST
в живой среде, я просто просто тестировал, будет ли это работать.
В настоящее время я делаю следующее:
$var = filter_input(INPUT_POST, "var", FILTER_SANITIZE_STRING);
if(!$var) $var = filter_input(INPUT_GET, "var", FILTER_SANITIZE_STRING);
однако со многими вещами в PHP, часто более простой способ, который будет делать все это для меня в одной команде. Мне интересно, если это так, я могу объединить их в одну проверку? Я выполнил беглый поиск в Google и даже не нашел ссылок на тех, кто пытался это сделать раньше, не говоря уже о решении, поэтому теперь я обращаюсь к вам с хорошими людьми.
С какой целью вы хотите «дезинфицировать» вашу строку? –
Чтобы убедиться, что никакой вредоносный код не был введен в переменную GET, или в случае POST кто-то не изменил форму (скорее всего, это была скрытая переменная) и разместил там что-то злонамеренное. – Styphon
http://php.net/manual/en/function.filter-input.php - как сказано, первый параметр является одной из констант, без массива, no || пункт. Если вы хотите сделать это с одной строкой, вы должны сделать пользовательскую функцию, которая принимает массив, то есть, задает и устанавливает все элементы в качестве первого параметра.Тем не менее, это кажется плохой практикой, поскольку вы действительно не знаете, что такое ваш вход. –