Подтвердить что ты не робот

Очистка массива _POST полностью

Я хочу, чтобы содержимое массива $_POST полностью, все примеры, которые я вижу в Интернете, выглядят следующим образом:

if (count($_POST) > 0) {
    foreach ($_POST as $k=>$v) {
        unset($_POST[$k]);
    }
}

Скажите пожалуйста, этот вариант будет не лучше? (С точки зрения экономии ресурсов)

if (count($_POST) > 0) {
     $_POST = array();
}

или нет?

4b9b3361

Ответ 1

Да, это нормально. $_POST - это еще одна переменная, за исключением того, что она имеет (super) глобальную область.

$_POST = array();

... будет достаточно. Цикл бесполезен. Вероятно, лучше сохранить его как массив, а не отключить, если другие файлы пытаются его прочитать и считая, что это массив.

Ответ 2

Чтобы отключить переменную $_POST, переопределите ее как пустой массив:

$_POST = array();

Ответ 3

Это может показаться чересчур неудобным, но вам, вероятно, лучше отключить один элемент за раз, а не весь массив $_POST. Вот почему: Если вы используете объектно-ориентированное программирование, у вас может быть один класс, который использует $_POST ['alpha'], а другой класс использует $_POST ['beta'], и если вы отключите массив после первого использования, он будет void его использование в других классах. Чтобы быть в безопасности и не стрелять себе в ногу, просто введите небольшой метод, который отключит элементы, которые вы только что использовали: например:

private function doUnset()
{
    unset($_POST['alpha']);
    unset($_POST['gamma']);
    unset($_POST['delta']);
    unset($_GET['eta']);
    unset($_GET['zeta']);
}

Просто вызовите метод и отмените только те суперглобальные элементы, которые были переданы переменной или аргументу. Тогда другие классы, которые могут нуждаться в суперглобальном элементе, могут использовать их.

Однако, вы разумны, чтобы отключить суперглобалы, как только они был передан инкапсулированному объекту.

Ответ 4

Вы можете использовать комбинацию unset() и инициализировать:

unset($_POST);
$_POST = array();

Или в одном выражении:

unset($_POST) ? $_POST = array() : $_POST = array();

Но почему вы хотите это сделать?

Ответ 5

Чтобы ответить "почему" кто-то может его использовать, у меня возникло искушение использовать его, поскольку у меня были значения $_POST, сохраненные после обновления страницы или при переходе с одной страницы на другую. Мой смысл подсказывает мне, что это не очень хорошая практика, но тем не менее она работает.