Правильный (безопасный) способ перебрать переменные POST в PHP - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть устаревший код, который я хочу обновить. В этой версии кода (которая была бэкэндом для jqGrid) параметры поиска отправлялись на сервер в переменных POST. Ключ POST - это имя поля, а значение - значение поиска. Начиная с нескольких лет назад, я начал получать доступ только к переменным POST через функцию filter_input, которая была предложена моей IDE. Однако я не нашел рекомендуемого способа циклически перебирать переменные POST без прямого доступа к переменной POST.

Часть устаревшего кода для параметров поиска выглядит следующим образом:

/*
 * Search Filter
 */
if ($search){
    $where_string = ' where ';
    foreach ($_POST as $key => $value){
        if (in_array($key,array('_search','nd','rows','page','sidx','sord','arg1','arg2'))==true){
            continue;
        }
        //put in functionality to search for exact values
        //to search for exact values, include a * character before the value you are searching for
        if (strpos($value, "*") === 0){
            //exact search
            $value = substr($value,1);
        }else{
            //like search
            $value = "%".$value."%";
        }
        $key = $mysqli->real_escape_string($key);
        $value = $mysqli->real_escape_string($value);
        $where_string .= '`'.$key.'` like "'.$value.'" AND ';
    }
    $where_string = rtrim($where_string,' AND ');
}

Предупреждение, которое выдает моя IDE: Do not Access Superglobal $_POST Array Directly. в строке foreach. Просто не уверен, должен ли я полностью избегать такого рода циклов или есть ли способ использовать filter_input с этим. Это своего рода общий код для любой таблицы. Спасибо за руководство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...