覆盖 $_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));
}
我的问题是如何直接覆盖 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));
}