覆盖 $_POST 内容

Override $_POST content

我的问题是如何直接覆盖 POST/GET 或直接覆盖 PHP 中的 $_REQUEST 值。我见过的大多数脚本,只是将一个变量分配给 POST 键,然后用它做他们想要的事情。

我只需要清理 输入,但我的条件是:我不必为此使用变量。例如:

$_POST['name'] = "Example's";

但是,我需要将此 POST 值覆盖为:

$_POST['name'] = 'Example\'s';

但是,没有分配变量。在这个过程中,我直接需要编辑 POST 键的值。我尝试创建一个循环,然后在其中执行我的过滤过程,但这对我没有帮助。

知道怎么做吗 运行?对不起,如果我不清楚。

您不应直接访问全局变量,而应使用 filter_input() 之类的过滤函数: $sanitized_var = filter_input(INPUT_POST, 'var_name', FILTER_SANITIZE_SPECIAL_CHARS)

您可以像这样尝试转义每个 $_POST 值:

$data= array_map(
  function($element) { return htmlspecialchars($element, ENT_QUOTES, 'utf-8'); },
  $_POST
);

好的,已找到修复方法。

意识到这很简单:

function cleanInput($input) {

  $search = array(
    '@<script[^>]*?>.*?</script>@si',  
    '@<[\/\!]*?[^<>]*?>@si',           
    '@<style[^>]*?>.*?</style>@siU',   
    '@<![\s\S]*?--[ \t\n\r]*>@'       
  );

    $output = preg_replace($search, '', $input);
    return $output;
}

foreach ($_POST as $key => $value) {
   $_POST[$key] = mysqli_real_escape_string($con,cleanInput($value));
}