このエントリーをはてなブックマークに追加

更新日: 2016年2月25日

実行時間: 0.0077

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」を指定します。

    http://your.site/my_class/my_action/?key_1=val_1&key_2=val_2
    $data = $this->input->get();
    print_r($data);
    /*
    Array
    (
        [key_1] => val_1
        [key_2] => val_2
    )
    */
                            
    $key_1 = $this->input->get('key_1');
    echo $key_1;
    //=> val_1

post($index = NULL, $xss_clean = FALSE)

 クライアントから送信されたPOSTデータを取得します。
使用方法は「get()」メソッドと同様となります。

    $data = $this->input->post();
    print_r($data);
    /*
    Array
    (
        [key_1] => val_1
        [key_2] => val_2
    )
    */
                            
    $key_1 = $this->input->post('key_1');
    echo $key_1;
    //=> val_1

get_post($index = NULL, $xss_clean = FALSE)

 「get_post()」メソッドは、まずPOSTデータの取得を試みて取得できた場合は、POSTデータを返し、 取得できなかった場合は、GETデータの取得を試みます。
 第一引数を指定しなかった場合は常に「FALSE」を返します。

    $data = $this->input->get_post('key_1');

cookie($index = NULL, $xss_clean = FALSE)

 クライアントから送信されたCOOKIEデータを取得します。
 第一引数を指定しなかった場合は常に「FALSE」を返します。

    $data = $this->input->cookie('key_1');

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」からサーバ環境情報を取得します。

    $referer = $this->input->server('HTTP_REFERER');

ip_address() 一番上に戻る

 クライアントのIPアドレスを取得します。

    $client_ip = $this->input->ip_address();

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」を取得します。

    $ua = $this->input->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フィルタリングが行われます。

    $accept_lang = $this->input->get_request_header('Accept-language');

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');
    }