CI_Intput
「CI_Input」クラスは、クライアントからリクエストで送信されてくる「HTTPリクエストヘッダ」や
「GETクエリデータ」「POSTデータ」、「COOKIE」などの入力データを管理・処理するクラスです。
また、「CI_Security」クラスと連携して入力データに対し
セキュリティチェックも行います。
CI_Inputの提供する機能
CI_Inputクラスが提供する機能について説明します。
「get()」「post()」「get_post()」「cookie()」「server()」「get_request_header()」
メソッドの第二引数に「TRUE」
を指定するとそれぞれのデータに対しXSSフィルタリングが行われます。
get($index = NULL, $xss_clean = FALSE)
クライアントから送信されたGETクエリデータを取得します。
第一引数に取得するGETクエリのインデックスキー文字列を指定することでその値が取得できます。
インデックスキー文字列を指定しない場合は、全てのGETクエリデータを連想配列で返します。
第二引数は、XSSフィルタリングを行う場合は「TRUE」を指定します。
print_r($data);
/* Array ( [key_1] => val_1 [key_2] => val_2 ) */
echo $key_1;
//=> val_1
post($index = NULL, $xss_clean = FALSE)
クライアントから送信されたPOSTデータを取得します。
使用方法は「get()」メソッドと同様となります。
print_r($data);
/* Array ( [key_1] => val_1 [key_2] => val_2 ) */
echo $key_1;
//=> val_1
get_post($index = NULL, $xss_clean = FALSE)
「get_post()」メソッドは、まずPOSTデータの取得を試みて取得できた場合は、POSTデータを返し、
取得できなかった場合は、GETデータの取得を試みます。
第一引数を指定しなかった場合は常に「FALSE」を返します。
cookie($index = NULL, $xss_clean = FALSE)
クライアントから送信されたCOOKIEデータを取得します。
第一引数を指定しなかった場合は常に「FALSE」を返します。
set_cookie(
$name = '',
$value = '',
$expire = '',
$domain = '',
$path = '/',
$prefix = '',
$secure = FALSE
)
COOKIEをセットします。
(CI_Outputクラスの機能であるべきのような気がしますが、CI_Inputクラスの機能です。)
引数には順番に以下のものを指定できます。必須の項目は「name」と「value」です。
- name: インデックス名
- value: 値
- expire: 有効期限
- domain: 許可ドメイン
- path: 許可URIパス
- prefix: 名前衝突回避プリフィックス
- secure: HTTPS接続のみ利用
引数の詳しい情報は、PHPマニュアルの 「setcookie」を参照してください。
$this->input->set_cookie( 'my_cookie', 'ABCDEFG', time() + 3600 );
$cookie = array( 'name' => 'my_cookie', 'value' => 'ABCDEFG', 'expire' => time() + 3600, 'domain' => 'your.site', 'path' => '/', 'prefix' => '', 'secure' => FALSE ) $this->input->set_cookie($cookie);
server()
PHPのグローバル変数「$_SERVER」からサーバ環境情報を取得します。
ip_address() 一番上に戻る
クライアントのIPアドレスを取得します。
valid_ip($ip)
IPアドレスのバリデーションです。IPアドレスとして正しいフォーマット文字列かチェックします。
if ($this->input->valid_ip($ip)) { echo 'Yes, It is IP address'; } else { echo 'No, It is not IP address'; }
user_agent() 一番上に戻る
クライアントの「User-Agent」を取得します。
request_headers($xss_clean = FALSE)
リクエストされたHTTPヘッダを連想配列で返します。 引数に「TRUE」を指定するとXSSフィルタリングが行われます。
$headers = $this->input->request_headers();
print_r($headers);
/*
Array(
[Host] => www.ci-guide.info
[User-agent] => Mozilla/5.0 (Windows NT 6.1) Gecko/20100101 Firefox/11.0
[Accept] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[Accept-language] => ja,en-us;
[Accept-encoding] => gzip, deflate
[Connection] => keep-alive
)
*/
get_request_header($index, $xss_clean = FALSE) 一番上に戻る
特定のHTTPリクエストヘッダ情報を取得します。第一引数に取得したいヘッダの項目名を指定します。 第二引数に「TRUE」を指定するとXSSフィルタリングが行われます。
is_ajax_request()
AJAXによるリクエストかどうか判定します。
if ( $this->input->is_ajax_request() ) { echo 'Yes, It is Requested by AJAX'; } else { echo 'No, It is not Requested by AJAX'); }
is_cli_request() 一番上に戻る
コマンドラインで呼び出されたかどうか判定します。
if ( $this->input->is_cli_request() ) { echo 'Yes, It is Requested by Command Line'; } else { echo 'No, It is not Requested by Command Line'); }