GET-параметры - это данные, которые передаются в строке запроса после знака вопроса; каждый параметр типа ключ/значение разделяется амперсандом, например:

https://web-development-school.ru/index.php?option=com_abcde&task=rec

В данном примере после "?" следуют два параметра: 

  • option=com_abcde
  • task=rec

Любой из этих параметров можно получить в скрипте при помощи функции JRequest::getVar():

 $task = JRequest::getVar('task');

Однако не всё так просто! Проблема в том, что таким простым способом можно легко передать любые, в том числе и вредоносные данные; соответственно, все полученные данные следует обязательно проверять и фильтровать.

Рассмотрим пример такого фильтра. 

Задача: получить для дальнейшей работы значение параметра number, который указывает номер страницы и может содержать только цифры.

  1    $num = JRequest::getVar('number');
  2    $number = mb_eregi_replace('[^0-9]', '', (int)$num);
  3    if (is_int((int)$number)) {
  4             if ($number == 0) {
  5                   echo 'Ошибка в запросе! (номер страницы = 0)';
  6                   exit;
  7             }
  8    } else {
  9            echo 'Ошибка в запросе! (Номер материала содержит неверные данные)';
 10           exit;
 11   }
 12   if ($number == NULL) {
 13          echo 'Ошибка в запросе! (Не передан номер материала)';
 14          exit;
 15   } else {

              ОСНОВНОЙ КОД

  *    }

Рассмотрим всё построчно.

В строке 1 переменная $num получает значение параметра number, переданного методом GET.

В строке 2 переменная $num при помощи (int) преобразуется в число, после чего функция mb_eregi_replace отбрасывает все символы, кроме цифр от 0 до 9 и присваивает полученное значение переменной $number. Здесь важно понимать, что числа могут указываться в различных форматах, поэтому в строке применяется двойная система фильтрации.

В строке 3 управляющая конструкция if проверяет, является ли тип переменной $number целым числом. Если является, то в строках 4-7 проверяется, не равно ли значение этой переменной нулю: если равно, то выводится сообщение об ошибке (строка 5) и выполнение скрипта останавливается (строка 6).

Если же тп переменной $number не является целым числом (строка 8), то так же выводится сообщение об ошибке (строка 9) и выполнение кода прекращается (строка 10).

В строке 12 проверяется, не является ли значение $number переменной NULL: если является - вывод сообщения и остановка выполнения скрипта, если переменная является целым числом - выполняется весь дальнейший код страницы.

 

Добавлять комментарии и ответы могут только пользователи, прошедшие регистрацию!
Зарегистрируйтесь и напишите своё мнение или ответ!