Переопределить содержимое $ _POST

Мой вопрос заключается в том, как я могу напрямую переопределить значения POST / GET или просто значения $ _REQUEST в PHP. Большинство сценариев, которые я видел, просто присваивают переменную ключу POST и делают с ним нужные вещи.

Мне просто нужно дезинфицировать входы, но мое условие таково: мне не нужно использовать переменную для него. Например:

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

Но мне нужно переопределить это значение POST:

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

Но без присвоения переменной. В этом процессе мне непосредственно нужно отредактировать значение ключей POST. Я попытался создать цикл и затем выполнить мой процесс фильтрации внутри него, но это не помогло мне.

Есть идеи, как заставить это бежать? Извините, если мне неясно.

3

Решение

Вы не должны обращаться к глобальным переменным напрямую, вместо этого вы должны использовать функции фильтра, такие как filter_input ():
$sanitized_var = filter_input(INPUT_POST, 'var_name', FILTER_SANITIZE_SPECIAL_CHARS)

2

Другие решения

Вы можете попытаться избежать каждого $_POST значение как так:

$data= array_map(
function($element) { return htmlspecialchars($element, ENT_QUOTES, 'utf-8'); },
$_POST
);
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));
}
1
По вопросам рекламы [email protected]