0 Пользователей и 1 Гость просматривают эту тему.
  • 6 Ответов
  • 1645 Просмотров
*

neket

  • Захожу иногда
  • 61
  • 11 / 1
JRequest и фильтрация
« : 15.10.2012, 14:22:28 »
Доброго времени суток. Ни как не могу справиться с одной проблемой. Получаю через post-запрос изображение в виде base64. JRequest часть текста обрезает.
Пробовал использовать параметры:

    1 - JREQUEST_NOTRIM - если установлен, то пробелы по краям не обрежутся, по умолчанию пробелы отсекаются.
    2 - JREQUEST_ALLOWRAW - если установлен, то будет отключена всякая фильтрация, при этом более высокие биты игнорируются.
    4 - JREQUEST_ALLOWHTML - позволяет html-код. Но если установлен, то все равно будет включен фильтр безопасности по очистке html-кода.

Ни один не помогает, всё равно происходит обрезание кода. Как быть?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: JRequest и фильтрация
« Ответ #1 : 15.10.2012, 15:33:44 »
Именно JRequest режет? В $_POST все ок?

Попробуйте ещё вот такую комбинацию:
$var = base64_decode(JRequest::getVar('myVar', '', 'POST', 'BASE64'));

P.S.
Лучше вместо JRequest использовать JInput, так как JRequest уже в легаси и скоро от него совсем откажутся.
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
Re: JRequest и фильтрация
« Ответ #2 : 15.10.2012, 16:41:41 »
P.S.
Лучше вместо JRequest использовать JInput, так как JRequest уже в легаси и скоро от него совсем откажутся.

Ну да, только вот они не озадачились тем, что в JRequest можно было принудительно задавать откуда брать.

А теперь если есть задача взять данные именно из $_POST надо делать лишние телодвижения.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: JRequest и фильтрация
« Ответ #3 : 15.10.2012, 17:00:57 »
А теперь если есть задача взять данные именно из $_POST надо делать лишние телодвижения.
Почему же? Все осталось так же как и раньше:

Getting Values from a Specific Super Global


Код: php
$foo = $jinput->get->get('varname', 'default_value', 'filter');
$foo = $jinput->post->get('varname', 'default_value', 'filter');
$foo = $jinput->server->get('varname', 'default_value', 'filter');

http://docs.joomla.org/Retrieving_request_data_using_JInput

Кроме того, JInput сразу же доступен в контроллере в качестве свойства $input начиная с Платформы 12.2 (Joomla 3.x)
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: JRequest и фильтрация
« Ответ #4 : 15.10.2012, 17:09:13 »
А с файлами как удобно.
$files = $input->files->get('jform1');
Спасибо.
Аккуратный массивчик
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: JRequest и фильтрация
« Ответ #5 : 15.10.2012, 17:15:00 »
А с файлами как удобно.
$files = $input->files->get('jform1');
Спасибо.
Аккуратный массивчик
Аха. Так что плюсов стало больше, чем в JRequest. Главное уметь ими воспользоваться ;)
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
Re: JRequest и фильтрация
« Ответ #6 : 15.10.2012, 18:29:20 »
Почему же? Все осталось так же как и раньше:

Да как-то не совсем, тут они ввели magic метод, вместо того чтобы просто указать параметром откуда брать данные, что абсолютно неоправданно. Да и с точки зрения чистоты восприятия кода это не одобряется.

Ведь magic-методы - это fallback, к ним обращение идёт после того как в классе не найден запрашиваемый метод.
Соответственно их постоянное использование идёт в ущерб производительности.
Основное применение для них - обработать ошибку, которая не была перехвачена вовремя, а не быть использованными постоянно.


Код
$foo = $jinput->post->get('varname', 'default_value', 'filter');
Если посмотреть на обработку этого в JInput - что получается?
Создан дефолтный экземляр класса, который берёт данные из $_REQUEST, в нём не находится объекта/метода $post, идёт fallback к методу __get(), в котором заново создаётся экземпляр класса с уже заданными параметрами.

Да и вот это веселит
Цитировать
// TODO throw an exception
« Последнее редактирование: 15.10.2012, 18:35:08 от SDKiller »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Чем JFactory::getApplication()->input лучше JRequest::getVar()?

Автор Shustry

Ответов: 43
Просмотров: 14651
Последний ответ 13.01.2017, 12:18:41
от Septdir
Joomla 3.1 не находит JRequest. Не работает AJAX!

Автор justquestion

Ответов: 2
Просмотров: 2770
Последний ответ 11.10.2013, 12:42:08
от Aleks.Denezh