Мой вопрос заключается в том, как я могу напрямую переопределить значения POST / GET или просто значения $ _REQUEST в PHP. Большинство сценариев, которые я видел, просто присваивают переменную ключу 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));
}