PHP strip_tag и htmlspecialchars не работают для множественного ввода - PullRequest
0 голосов
/ 28 апреля 2020

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

$test = array('name' => '<script>alert("HELLO..");</script>',
                'phone' => '23497999000000'
                );

    (clean($test));
function clean($field)
    {
        foreach ($field as $key => $value) {
            $value = htmlspecialchars(strip_tags($value));
        }
        return $field;
    }


Ответы [ 3 ]

1 голос
/ 28 апреля 2020

Вы не присваиваете значения чему-либо, поэтому значение теряется внутри вашего внутреннего l oop.

function clean($field)
{
    foreach ($field as $key => $value) {
        $field[$key] = htmlspecialchars(strip_tags($value));
    }

    return $field;
}

Вы также хотите сохранить очищенную версию при возврате:

$test = clean($test);
1 голос
/ 28 апреля 2020

Вариант с передачей $value по ссылке :

function clean($field)
{
    foreach ($field as &$value) {
        $value = htmlspecialchars(strip_tags($value));
    }
    return $field;
}
0 голосов
/ 28 апреля 2020

Вы устанавливаете значение $ value, но теряете его, когда оно выходит из области видимости. Я думаю, что это будет правильно:

function clean($field)
    {
        foreach ($field as $key => $value) {
            $field[$key] = htmlspecialchars(strip_tags($value));
        }
        return $field;
    }
...