Input ClassПосібник користувача CodeIgniter

Клас Input виконує дві задачі:

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

Примітка: Цей клас ініціалізується системою автоматично, тому немає потреби робити це вручну.

Фільтрування безпеки

Функція фільтрації безпеки викликається автоматично під час завантаження нового контролера. Вона робить таке:

  • Якщо параметр $config['allow_get_array'] встановлений у FALSE (за промовчанням TRUE), знищує глобальний масив GET.
  • Видаляє всі глобальні змінні у разі включення register_globals.
  • Фільтрує масиви GET/POST/COOKIE, допускаючи лише алфавітно-числові (і деякі інші) символи.
  • Надає XSS-фільтрацію (Cross-site Scripting Hacks). Ця опція може бути увімкнена глобально, або тільки на один запит.
  • Стандартизує закінчення рядків у \n (у Windows \r\n)

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

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

Будь ласка, перегляньте документацію класу Security для отримання додаткової інформації про використання XSS-фільтрації у вашому додатку.

Використання даних POST, COOKIE та SERVER

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

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

Зі вбудованими функціями CodeIgniter ви можете робити просто так:

Ці три функції:

$this->input->post()

Перший параметр містить ім'я елемента POST, який потрібно отримати:

Функція повертає FALSE, якщо цей елемент не існує.

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

Щоб отримати масив усіх елементів POST, викличте цю функцію без налаштувань.

Щоб отримати всі елементи POST і пропустити їх через фільтр XSS, встановіть перший параметр NULL і другий параметр TRUE.

Ця функція поверне бульова FALSE, якщо масив POST порожній.

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

$this->input->get()

Ця функція ідентична функції вище, тільки вона віддає дані GET:

Щоб отримати масив всіх елементів 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->cookie()

Ця функція ідентична функції POST, тільки вона отримуватиме дані Cookie:

$this->input->server()

Ця функція ідентична функцій вище, тільки вона отримує серверні дані:

$this->input->set_cookie()

Встановлює куки, що містять вказані значення. Є два способи передати інформацію в цю функцію, щоб встановити куки: масивом і окремо вказавши параметри:

Використання масиву

Використовуючи цей метод, передайте асоціативний масив у першому параметрі:

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

Примітки:

Потрібні лише ім'я та значення. Щоб видалити куку, залиште час порожнім.

Час закінчення встановлюєтьсясекундах, які будуть додані до поточного часу. Не включайте час, тільки кількість секунду від поточного моменту, які кука повинна бути валідною. Якщо час закінчення встановлено в нуль, кука буде дійсна лише поки відкритий браузер.

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

Шлях, як правило, можна не вказувати, тому що функція сама встановлює кореневий шлях.

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

Встановіть параметр secure у TRUE, щоб зробити безпечну куку.

Окремо передані параметри

Якщо ви віддаєте перевагу, можете встановити cookie, передавши дані в функцію окремими параметрами:

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

$this->input->cookie()

Дозволяє вам отримати кукі. Перший параметр містить тільки ім'я cookie, яке ви шукаєте (включаючи будь-які префікси):

Функція поверне FALSE, якщо елемент, який потрібно отримати, недоступний.

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

$this->input->ip_address()

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

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

$this->input->user_agent()

Повертає дані User Agent (веб-браузер) поточного користувача. Повертає FALSE, якщо дані недоступні.

Дивіться також методи класу User Agent, які дозволяють отримати інформацію про їх рядок User Agent.

$this->input->request_headers()

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

$this->input->get_request_header();

Повертає один елемент із масиву заголовків запиту.

$this->input->is_ajax_request()

Перевіряє серверний заголовок HTTP_X_REQUESTED_WITH і повертає TRUE або FALSE.

$this->input->is_cli_request()

Перевіряє встановлену константу STDIN , яка дозволяє зрозуміти, що PHP викликаний з командного рядка.