Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!
Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!
При проектировании любого веб-приложения (и даже не только веб!) очень важно проверять все входные данные перед их использованием. Элементарная проверка данных позволяет увеличить безопасность вашего сайта в разы! Joomla предоставляет нам набор библиотек для проверки GET/POST запросов. Рассмотрим возможности класса JRequest на реальных примерах.
Пример №1. Допустим мы хотим получить Ф.И.О. человека из поля "fio" формы, и сохранить значение в переменную $name. При этом мы точно не можем сказать каким методом (GET или POST) будет отправлена форма. Делаем следующее:
При этом, если не установлены другие параметры, то с начала и конца строки удаляться пробелы, и текст будет очищен от HTML-форматирования.
Пример №2. Часто бывают случаи когда переменная может и не придти от пользователя, либо её тип не совпадет с ожидаемым. В качестве второго параметра можно указать "Значение по умолчанию":
Теперь, если человек, при заполнении формы не укажет свое имя, ему будет присвоено имя "Неизвестный пользователь".
Пример №3. Очень часто разработчики предпочитают явно указывать откуда они хотят получить переменную. Это слегка увеличивает безопасность компонента, а так же упрощает работу, например при использовании технологии AJAX.
Помните, что запрос POST также легко подделать как и GET, тем не менее мы рекомендуем вам явно указывать подобные моменты, это поможет содержать Ваше приложение в порядке.
Теперь переменная явно будет браться из массива $_GET. Если третьим параметром ничего не указать, то значения будут браться из массива $_REQUEST.
В качестве атрибута можно использовать одно из следующих ключевых слов:
Пример №4. Четвертым параметром явно указываем тип переменной. В нашем случае это "string".
Так же поддерживаются следующие типы:
Для удобства вы можете использовать методы класса "JRequest" следующего типа:
Методы выполняют ту же самую роль что и "getVar", аргументы те же, за исключением того что нет маски и типа переменной. Метод "get" использует два параметра - название переменной и маска.
Пример №5. Наконец-то пятым параметром мы можем наложить маску фильтрации. Фильтр устанавливает специальным числом - битом. Маски бывают 3 типов:
Можно использовать несколько фильтров. Допустим нам нужно оставить пробелы по краям и не вырезать html-код. Для этого мы вписываем пятым параметром 5 (1+4), либо можно через константы - "JREQUEST_NOTRIM+JREQUEST_ALLOWHTML".
На практике это выглядит так:
Пример №6. Получим массив значений, который пришел в POST с помощью класса JRequest. Напомним что массив можно отправить следующим способом:
Получить эти значения можно так:
Объявление класса
Файл в котором описан статический класс JRequest находиться по адресу
Класс для любого расширения объявлен всегда, и не нуждается в явном подключении через jimport();
Отличная статья, полезно порой разjбраться как работают разные CMS