正确(安全)的方法来遍历PHP

时间:2018-09-07 14:30:46

标签: php post jqgrid

我有一些旧代码要更新。在该版本的代码中(这是jqGrid的后端),搜索参数在POST变量中发送到服务器。 POST键是字段名称,而值是搜索值。从几年前开始,我开始仅通过filter_input函数访问POST变量,这是我的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。它是任何表的通用代码。感谢您的指导。

0 个答案:

没有答案