cot_import()
07.03.2025
Как пользоваться ?

Ввод данных и их проверка

1. Фильтрация и проверка введенных пользователем данных

Для разработчика на PHP часто встает задача получения данных от пользователя получаемых через GET/POST запросы или из Cookie. Использование встроенных переменных $_GET$_POST$_COOKIE (и т.п.) на прямую, без какой либо фильтрации данных не безопасно и может привести к проблемам отображения страниц, потере данных и даже взлому системы. Именно поэтому внутри Cotonti везде используется специальная функция cot_import():

function cot_import($name, $source, $filter, $maxlen = 0, $dieonerror = false, $buffer = false)

Параметры функции:

  • $name - имя поля ввода данных в HTML форме.
  • $source - источник данных. Допустимые значения:
    • 'G' или 'GET' - для GET запросов;
    • 'P' или 'POST' - для POST данных;
    • 'C' или 'COOKIE' - для получения данных из cookie;
    • 'R' или 'REQUEST' - для импорта из PHP переменной $_REQUEST;
    • 'D' или 'DIRECT' - используется для фильтрации данных переданных в параметре $name;
    • 'PUT' - для импорта данных из HTTP PUT запроса (для REST сервисов);
    • 'DELETE' - для импорта данных из HTTP DELETE запроса (для REST);
    • 'PATCH' - для импорта данных из HTTP PATCH запроса (для REST).
  • $filter - имя фильтра, который будет использован для проверки данных. Доступные (встроенные) фильтры:
    • 'ALP' - фильтрует (удаляет) все символы, кроме символов латинского алфавита, цифр, дефиса и символа подчеркивания. Полезно использовать для ввода различных идентификаторов;
    • 'ARR' - импортирует данные как массив. Значения всех элементов массива должны быть дополнительно отфильтрованы разработчиком;
    • 'BOL' - импорт данных типа boolean, или чекбоксов. Возвращает TRUE, если чекбокс (флажок) выбран или получено значение 'on' или 1FALSE если чекбокс не выбран или значение равно нулю, строке 'off'. Возвращает NULL в остальных случаях;
    • 'HTM' - пропускает любой текст обрезая ведущие и закрывающие пробелы, любые HTML теги и код будет оставлен без изменений;
    • 'INT' - пропускает только целые числовые значения, возвращает данные типа PHP (int). Возвращает NULL, если данне не являются целым числом;
    • 'NOC' - фильтр-пустышка (no check), пропускает любые данные без изменений;
    • 'NUM' - пропускает только числовые значения, возвращая переменную типа PHP (float) или NULL, если проверка не прошла;
    • 'PSW' - специальный фильтр для ввода паролей, удаляет символы кавычки, символы &<> и ограничивает строку до 32 знаков;
    • 'TXT' - фильтр пропускает обычный текст, но фильтрует HTML код, путем замены части спец символов на их текстовые представления;
  • $maxlen - задает максимальный размер импортируемых данных, 0 означает без ограничений;
  • $dieonerror - указывает скрипту остановить выполнение если импортируемые данные не прошли фильтр;
  • $buffer - включает использование буфера данных, который используется в API форм (Form API).

Таким образом, возвращаемое значение это фильтрованные данные или NULL в случае, если данные не прошли фильтр и пользователь должен ввести их повторно. Приведем несколько примеров:

$title  = cot_import('title',  'P', 'TXT');
$code   = cot_import('code',   'P', 'ALP');
$count  = cot_import('count',  'P', 'INT');
$text   = cot_import('text',   'P', 'HTM');
$notify = cot_import('notify', 'P', 'BOL');