str-replace Неустранимая ошибка: только переменные могут быть переданы по ссылке

У меня есть этот код как анти-HTML и SQL инъекций для онлайн-игры, но он не работает и выдает мне следующую ошибку:

    Fatal error: Only variables can be passed by reference

Вот мой код:

    $_POST = str_replace('<', '>', '\'', '\'', '\\', '&lt;', '&gt;', '&quot;', '&#39; ', '&#92;', $_POST);
$_GET = str_replace('<', '>', '\'', '\'', '\\', '&lt;', '&gt;', '&quot;', '&#39;', '&#92;', $_GET);

Это касается первой из двух строк, но я уверен, что проблема будет и со второй. Я не очень хорош в php, и это файлы, которые я взял из Интернета.
Как я могу решить это?

0

Решение

Вам не нужно реализовывать свой собственный XSS-фильтр, так как он уже существует один

И вы можете воспользоваться этим следующим образом:

$_POST = filter($_POST);
$_GET = filter($_GET);

function filter(array $value) {
return is_array($value) ? array_map(__FUNCTION__, $value) : htmlentities($value);

}

Это также отфильтрует вложенные массивы (если ваш ввод был похож name[])

1

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

Может быть так:

$post_vars = array();

for ($i=0; i<count($_POST); $i++)
{
$post_vars[$i] = str_replace('<', '>', '\'', '\'', '\\', '&lt;', '&gt;', '&quot;', '&#39; ', '&#92;', $_POST[$i]);
}

То же самое касается массива $ _GET.

0

По вопросам рекламы [email protected]