ФорумПрограммированиеПыхнуть хотите?Готовые решения → Как правильно забирать данные из GET && POST

Как правильно забирать данные из GET && POST

  • Hight

    Сообщения: 1489 Репутация: N Группа: Адекваты

    Spritz 20 сентября 2010 г. 22:56

    ИМХО. Вот так:
    <?php

    class REQUEST
    {
    private static function _stripslashes(&$Hight)
    {
    $Hight = stripslashes($Hight);
    }

    public static function post($name, $array = false)
    {
    if(!isset($_POST[$name]) or !$is_array = is_array($_POST[$name]) and !mb_strlen($_POST[$name])) return null;

    if(get_magic_quotes_gpc())
    {
    if($is_array)
    {
    if(!$array) return null;
    array_walk_recursive($_POST[$name], 'self::_stripslashes');
    return $_POST[$name];
    } else return stripslashes($_POST[$name]);
    } else return $is_array? ($array? $_POST[$name] : null) : $_POST[$name];
    }

    public static function get($name, $array = false)
    {
    if(!isset($_GET[$name]) or !$is_array = is_array($_GET[$name]) and !mb_strlen($_GET[$name])) return null;

    if(get_magic_quotes_gpc())
    {
    if($is_array)
    {
    if(!$array) return null;
    array_walk_recursive($_GET[$name], 'self::_stripslashes');
    return $_GET[$name];
    } else return stripslashes($_GET[$name]);
    } else return $is_array? ($array? $_GET[$name] : null) : $_GET[$name];
    }
    }

    ?>


    Умеет выдёргивать строки и массивы из массивов GET и POST. Автоматически выпиливает магические кавычки. Проверяет наличие данных в массивах GET и POST.

    Примеры:
    <?php

    // Для массива GET

    $input_get_var = REQUEST::get('var_name');
    $input_get_array = REQUEST::get('array_name', true);

    // Для массива POST

    $input_post_var = REQUEST::post('var_name');
    $input_post_array = REQUEST::post('array_name', true);



    Переменная в массивах POST или GET не определена - соответствующая функция вернёт NULL.
    Массив в массивах POST или GET не определён - соответствующая функция вернёт NULL.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 20 сентября 2010 г. 22:59, спустя 3 минуты 18 секунд

    гавно какое то.

    вот самый адский подход


    if(get_magic_quotes_gpc())
    {
    die("ОТКЛЮЧИ ЕБАНЫЕ КАВЫЧКИ");
    }


    люблю лечить ИСТОЧНИК проблемы, а не последствия и как всегда уверен, что это правильный подход.
    Сапожник без сапог
  • Hight

    Сообщения: 1489 Репутация: N Группа: Адекваты

    Spritz 20 сентября 2010 г. 23:04, спустя 5 минут 8 секунд

    гавно какое то.

    Как ты вообще в программирование попал. Удивляюсь.
    люблю лечить ИСТОЧНИК проблемы, а не последствия и как всегда уверен, что это правильный подход.

    Не люблю лечить. Не доктор. Люблю делать так, чтобы проблемы не было. Люблю писать удобные функции.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 20 сентября 2010 г. 23:10, спустя 5 минут 51 секунду

    Как ты вообще в программирование попал

    а я и не там, я по образованию философ-мозгоеб
    Спустя 37 сек.
    Люблю делать так, чтобы проблемы не было. Люблю писать удобные функции.

    костыли - не лучший метод хотьбы со сломаными ногами, особенно когда ноги можно выпрямить
    Сапожник без сапог
  • Hight

    Сообщения: 1489 Репутация: N Группа: Адекваты

    Spritz 20 сентября 2010 г. 23:13, спустя 2 минуты 45 секунд

    а я и не там, я по образованию философ-мозгоеб

    Коллега.
    костыли - не лучший метод хотьбы со сломаными ногами, особенно когда ноги можно выпрямить

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

    Посмотрел, разобрался? А теперь прикинь насколько упрощается код когда больше не нужны все эти isset`ы и empty…
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 20 сентября 2010 г. 23:17, спустя 4 минуты 12 секунд

    назвать класс именем глобального массива - это сильно :)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 20 сентября 2010 г. 23:18, спустя 23 секунды

    эти isset`ы и empty…

    error_reporting(E_ALL & ~E_NOTICE);

    и они не нужны, чо я делаю не так? :)
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 20 сентября 2010 г. 23:19, спустя 1 минуту 10 секунд

    фу, статика, фууу
    Спустя 23 сек.
    phpdude, да ты сам же выябуешься
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 20 сентября 2010 г. 23:20, спустя 1 минуту 5 секунд


    фу, статика, фууу
    ага $this->request->isPost() куда ахуеннее!!!! фабьен любит тебя!!! :D

    даже в asp.net request/response - cтатика, просто фабка хуябка еще не дошел до этого и хабра хабра не додрочил на статику, но это скоро будет, совсем скоро
    Спустя 32 сек.
    по сути статика -один из методов реализации синглтона, респонз и реквест - что нинаесть синглтоны … чем тут тебе статика не угодила? синтаксисом?
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 20 сентября 2010 г. 23:22, спустя 2 минуты 6 секунд

    респонз и реквест - что нинаесть синглтоны

    хуй на!

    я делаю запрос на чужой сервер - формирую объект Реквест, мне в ответ приходит… Объект Респонз!
    и какие ж они синглтоны после этого?)
  • Hight

    Сообщения: 1489 Репутация: N Группа: Адекваты

    Spritz 20 сентября 2010 г. 23:23, спустя 46 секунд

    назвать класс именем глобального массива - это сильно :)

    =) заюзай гугл переводчик. Переведи REQUEST.
    фу, статика, фууу

    Это вопрос здравого смысла. Можешь себе представить ситуацию где в данном случае может потребоваться создавать объект?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 20 сентября 2010 г. 23:24, спустя 1 минуту 42 секунды

    сообщением выше написал хуйню
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 20 сентября 2010 г. 23:24, спустя 23 часа 59 минут 25 секунд

    я делаю запрос на чужой сервер - формирую объект Реквест, мне в ответ приходит… Объект Респонз!
    и какие ж они синглтоны после этого?)

    ты - дурак, больше тут сказать нечего. твой пример - никак не связан с суперглобальным блядь все таки request / response, ты создаешь контейнеры для какого то драйвера работы с удаленным сервером и не больше. пригоняй на пыхаслет! я те плакат фабьена подарю! :D
    Сапожник без сапог
  • Hight

    Сообщения: 1489 Репутация: N Группа: Адекваты

    Spritz 20 сентября 2010 г. 23:25, спустя 56 секунд

    сообщением выше написал

    Хуйню ты написал. =)
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 20 сентября 2010 г. 23:27, спустя 2 минуты 22 секунды

    phpdude, чем тот контейнер параметров отличается от контейнера для суперглобальных массивов? да ничем

Пожалуйста, авторизуйтесь, чтобы написать комментарий!