Фреймворк CodeIgniter Version 2.1.3


Класс Input (ввод)

Класс Input выполняет две задачи:

  1. Препроцессинг глобальных данных ввода в целях безопасности;
  2. Предоставляет некоторые функции-помощники для получения данных ввода и их препроцессинга.

Примечание: Этот класс инициализируется системой автоматически, поэтому нет нужды делать это вручную.

Фильтрация безопасности

Функция фильтрации безопасности вызывается автоматически при загрузке нового контроллера. Она делает следующее:

XSS-фильтрация

Класс Input имеет способность автоматически фильтровать данные с ввода для предотвращения XSS-атак. Если вы хотите, чтобы фильтр запускался автоматически при каждом запросе, откройте ваш файл application/config/config.php и установите следующее:

$config['global_xss_filtering'] = TRUE;

Пожалуйста посмотрите документацию класса Security для получения дополнительной информации об использовании XSS-фильтрации в вашем приложении.

Использование данных POST, COOKIE и SERVER

CodeIgniter имеет три функции-помощника, которые позволяют вам получать данные POST, COOKIE и SERVER. Основное преимущество использования функций, вместо того, чтобы получать данные напрямую ($_POST['parameter']) состоит в том, что функции проверяют их существование, и в соответствии с этим возвращают FALSE или данные. Это позволяет вам более удобно использовать данные без ручной проверки их существования. Другими словами, обычно вы можете делать так:

if ( ! isset($_POST['something']))
{
    $something = FALSE;
}
else
{
    $something = $_POST['something'];
}

Со встроенными функциями CodeIgniter вы можете делать просто так:

$something = $this->input->post('something');

Эти три функции:

$this->input->post()

Первый параметр содержит имя элемента POST, который вы хотите получить:

$this->input->post('some_data');

Функция возвращает FALSE, если указанный элемент не существует.

Второй опциональный параметр позволяет вам пропускать данные через фильтр XSS. Эта опция включается установкой второго параметра в булево TRUE.

$this->input->post('some_data', TRUE);

Чтобы получить массив всех элементов POST, вызовите эту функцию без параметров.

Чтобы получить все элементы POST и пропустить их через фильтр XSS, установите первый параметр в NULL и второй параметр в TRUE.

Эта функция вернет булево FALSE, если массив POST пустой.

$this->input->post(NULL, TRUE); // возвращает все элементы POST, пропустив их через фильтр XSS
$this->input->post(); // возвращает все элементы POST без XSS-фильтрации

$this->input->get()

Эта функция идентична функции выше, только она отдает данные GET:

$this->input->get('some_data', TRUE);

Чтобы получить массив всех элементов GET, вызовите эту функцию без параметров.

Чтобы получить все элементы GET и пропустить их через фильтр XSS, установите первый параметр в NULL и второй параметр в TRUE.

Эта функция вернет булево FALSE, если массив GET пустой.

$this->input->get(NULL, TRUE); // вернет все элементы GET, пропустив их через фильтр XSS
$this->input->get(); // вернет все элементы GET без XSS-фильтрации

$this->input->get_post()

Эта функция вернет оба потока данных, из GET и из POST. Сперва будет смотреть POST, потом GET:

$this->input->get_post('some_data', TRUE);

$this->input->cookie()

Эта функция идентична функции POST, только она будет получать данные Cookie:

$this->input->cookie('some_data', TRUE);

$this->input->server()

Эта фунция идентична функциям выше, только она получает серверные данные:

$this->input->server('some_data');

$this->input->set_cookie()

Устанавливает куки, содержащие указанные значения. Есть два способа передать информацию в эту функцию, чтобы установить куки: массивом и раздельно указав параметры:

Использование массива

Используя этот метод, передайте ассоциативный массив в первом параметре:

$cookie = array(
    'name'   => 'The Cookie Name',
    'value'  => 'The Value',
    'expire' => '86500',
    'domain' => '.some-domain.com',
    'path'   => '/',
    'prefix' => 'myprefix_',
    'secure' => TRUE
);

$this->input->set_cookie($cookie);

Примечания:

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

Время истечения устанавливается в секундах, которые будут добавлены к текущему времени. Не включайте время, только количество секунду от текущего момента, которые кука должна быть валидной. Если время истечения установить в ноль, кука будет действительна только пока открыт браузер.

Для межсайтовых кук, несмотря на то, с какого сайта вы их запрашиваете, добавьте ваш URL, начинающийся с точки в domain: .your-domain.com

Путь, как правило, можно не указывать, так как функция сама устанавливает корневой путь.

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

Установите параметр secure в TRUE, чтобы сделать безопасную куку.

Раздельно переданные параметры

Если вы предпочитаете, можете установить куки, передав данные в функцию отдельными параметрами:

$this->input->set_cookie($name, $value, $expire, $domain, $path, $prefix, $secure);

$this->input->cookie()

Позволяет вам получить куки. Первый параметр содержит только имя куки, которую вы ищете (включая любые префиксы):

cookie('some_cookie');

Функция вернет FALSE, если элемент, который вы хотите получить, не доступен.

Второй опциональный параметр позволит вам пропустить данные через фильтр XSS. Он включается установкой значения в TRUE.

cookie('some_cookie', TRUE);

$this->input->ip_address()

Вернет IP-адрес текущего пользователя. Если IP-адрес неправильный, функция вернет 0.0.0.0

echo $this->input->ip_address();

$this->input->valid_ip($ip)

Принимает IP-адрес на вход, и возвращает TRUE или FALSE, если он правильный или нет. Принимает опциональный второй строковый параметр "IPv4" или "IPv6" для указания формата IP-адреса. По умолчанию происходит проверка обоих форматов. Примечание: функция $this->input->ip_address(), описанная выше, самостоятельно проверяет правильность IP.

if ( ! $this->input->valid_ip($ip))
{
     echo 'Not Valid';
}
else
{
     echo 'Valid';
}

$this->input->user_agent()

Возвращает данные User Agent (веб-браузер) текущего пользователя. Возвращает FALSE, если данные не доступны.

echo $this->input->user_agent();

Смотрите также методы класса User Agent, которые позволяют извлечь информацию их строки User Agent.

$this->input->request_headers()

Полезно при запуске в не-Апач окружении, где apache_request_headers() могут не поддерживаться. Функция возвращает массив заголовков.

$headers = $this->input->request_headers();

$this->input->get_request_header();

Возвращает один элемент из массива заголовков запроса.

$this->input->get_request_header('some-header', TRUE);

$this->input->is_ajax_request()

Проверяет серверный заголовок HTTP_X_REQUESTED_WITH, и возвращает TRUE или FALSE.

$this->input->is_cli_request()

Проверяет установленную константу STDIN, которая дает понять, что PHP вызван из командной строки.

$this->input->is_cli_request()
    Поддержать сайт на родительском проекте КГБ