我的问题是如何在PHP中直接覆盖POST / GET或$ _REQUEST值。我见过的大多数脚本,只需将一个变量分配给POST键,并用它做所需的东西。
我只需要清理输入,但我的条件是:我不必为它使用变量。例如:
$_POST['name'] = "Example's";
但是,我需要将此POST值覆盖为:
$_POST['name'] = 'Example\'s';
但是,没有赋值变量。在这个过程中,我直接需要编辑POST键的值。我尝试创建一个循环,然后在其中进行过滤,但这对我没有帮助。
任何想法,如何让这个运行?如果我不清楚,我很抱歉。
答案 0 :(得分:2)
您不应该直接访问全局变量,而应该使用filter_input()之类的过滤器函数:
$sanitized_var = filter_input(INPUT_POST, 'var_name', FILTER_SANITIZE_SPECIAL_CHARS)
答案 1 :(得分:1)
您可以尝试转义每个$_POST
值,如下所示:
$data= array_map(
function($element) { return htmlspecialchars($element, ENT_QUOTES, 'utf-8'); },
$_POST
);
答案 2 :(得分:1)
好的,找到了解决办法。
意识到它很简单:
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));
}