Input 클래스

Input 클래스는 입력 데이터에 접근하고 사전 처리하기 위한 헬퍼 메소드를 제공합니다.

참고

이 클래스는 시스템에 의해 자동으로 초기화되므로 수동으로 초기화할 필요가 없습니다.

입력 데이터 접근

POST, GET, COOKIE 또는 SERVER 데이터 사용

CodeIgniter는 POST, GET, COOKIE 또는 SERVER 항목을 가져올 수 있는 헬퍼 메소드를 제공합니다. 항목을 직접 가져오는 것($_POST['something'])보다 제공된 메소드를 사용하는 주요 장점은 메소드가 항목이 설정되어 있는지 확인하고 설정되어 있지 않으면 NULL을 반환한다는 것입니다. 이를 통해 항목이 먼저 존재하는지 테스트하지 않고도 편리하게 데이터를 사용할 수 있습니다. 일반적으로 다음과 같이 할 것입니다:

$something = isset($_POST['something']) ? $_POST['something'] : NULL;

CodeIgniter의 내장 메소드를 사용하면 간단히 다음과 같이 할 수 있습니다:

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

주요 메소드는 다음과 같습니다:

  • $this->input->post()

  • $this->input->get()

  • $this->input->cookie()

  • $this->input->server()

php://input 스트림 사용

PUT, DELETE, PATCH 또는 다른 특수한 요청 메소드를 활용하려면 한 번만 읽을 수 있는 특수 입력 스트림을 통해서만 접근할 수 있습니다. 이것은 항상 존재하며 모든 POST 데이터에 한 번의 기회만 있다는 것을 신경 쓰지 않고 여러 변수에 접근을 시도할 수 있는 $_POST 배열에서 읽는 것만큼 쉽지 않습니다.

CodeIgniter가 이를 처리해 주므로 $raw_input_stream 속성을 사용하여 언제든지 php://input 스트림에서 데이터를 읽을 수 있습니다:

$this->input->raw_input_stream;

또한 입력 스트림이 $_POST처럼 폼 인코딩된 경우 input_stream() 메소드를 호출하여 값에 접근할 수 있습니다:

$this->input->input_stream('key');

get()post()와 같은 다른 메소드와 유사하게 요청한 데이터를 찾을 수 없으면 NULL을 반환하며, 두 번째 매개변수로 boolean 값을 전달하여 xss_clean()을 통해 데이터를 실행할지 여부를 결정할 수 있습니다:

$this->input->input_stream('key', TRUE); // XSS 정리
$this->input->input_stream('key', FALSE); // XSS 필터 없음

참고

PUT, DELETE 또는 PATCH 데이터를 읽고 있는지 알기 위해 method()를 활용할 수 있습니다.

클래스 레퍼런스

class CI_Input
$raw_input_stream

php://input 데이터를 그대로 반환하는 읽기 전용 속성입니다.

이 속성은 여러 번 읽을 수 있습니다.

post([$index = NULL[, $xss_clean = FALSE]])
매개변수:
  • $index (mixed) – POST 매개변수 이름

  • $xss_clean (bool) – XSS 필터링 적용 여부

반환:

매개변수가 없으면 $_POST, 그렇지 않으면 찾은 경우 POST 값 또는 찾지 못한 경우 NULL

반환 형식:

mixed

첫 번째 매개변수는 찾고 있는 POST 항목의 이름을 포함합니다:

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

검색하려는 항목이 존재하지 않으면 메소드는 NULL을 반환합니다.

선택적인 두 번째 매개변수를 사용하면 XSS 필터를 통해 데이터를 실행할 수 있습니다. 두 번째 매개변수를 boolean TRUE로 설정하여 활성화합니다:

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

모든 POST 항목의 배열을 반환하려면 매개변수 없이 호출하세요.

모든 POST 항목을 반환하고 XSS 필터를 통해 전달하려면 첫 번째 매개변수를 NULL로 설정하고 두 번째 매개변수를 boolean TRUE로 설정합니다:

$this->input->post(NULL, TRUE); // XSS 필터와 함께 모든 POST 항목 반환
$this->input->post(NULL, FALSE); // XSS 필터 없이 모든 POST 항목 반환

여러 POST 매개변수의 배열을 반환하려면 모든 필요한 키를 배열로 전달합니다:

$this->input->post(array('field1', 'field2'));

XSS 필터링이 활성화된 상태로 매개변수를 검색하려면 두 번째 매개변수를 boolean TRUE로 설정합니다:

$this->input->post(array('field1', 'field2'), TRUE);
get([$index = NULL[, $xss_clean = FALSE]])
매개변수:
  • $index (mixed) – GET 매개변수 이름

  • $xss_clean (bool) – XSS 필터링 적용 여부

반환:

매개변수가 없으면 $_GET, 그렇지 않으면 찾은 경우 GET 값 또는 찾지 못한 경우 NULL

반환 형식:

mixed

이 메소드는 post()와 동일하지만 GET 데이터를 가져옵니다:

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

모든 GET 항목의 배열을 반환하려면 매개변수 없이 호출하세요.

모든 GET 항목을 반환하고 XSS 필터를 통해 전달하려면 첫 번째 매개변수를 NULL로 설정하고 두 번째 매개변수를 boolean TRUE로 설정합니다:

$this->input->get(NULL, TRUE); // XSS 필터와 함께 모든 GET 항목 반환
$this->input->get(NULL, FALSE); // XSS 필터링 없이 모든 GET 항목 반환

여러 GET 매개변수의 배열을 반환하려면 모든 필요한 키를 배열로 전달합니다:

$this->input->get(array('field1', 'field2'));

XSS 필터링이 활성화된 상태로 매개변수를 검색하려면 두 번째 매개변수를 boolean TRUE로 설정합니다:

$this->input->get(array('field1', 'field2'), TRUE);
post_get($index[, $xss_clean = FALSE])
매개변수:
  • $index (string) – POST/GET 매개변수 이름

  • $xss_clean (bool) – XSS 필터링 적용 여부

반환:

찾은 경우 POST/GET 값, 찾지 못한 경우 NULL

반환 형식:

mixed

이 메소드는 post()get()과 거의 동일하게 작동하지만 결합된 형태입니다. POST를 먼저 찾은 다음 GET에서 데이터를 검색합니다:

$this->input->post_get('some_data', TRUE);
get_post($index[, $xss_clean = FALSE])
매개변수:
  • $index (string) – GET/POST 매개변수 이름

  • $xss_clean (bool) – XSS 필터링 적용 여부

반환:

찾은 경우 GET/POST 값, 찾지 못한 경우 NULL

반환 형식:

mixed

이 메소드는 post_get()과 동일하게 작동하지만 GET 데이터를 먼저 찾습니다.

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

참고

이 메소드는 post_get()과 정확히 동일하게 작동했었지만 CodeIgniter 3.0에서 동작이 변경되었습니다.

cookie([$index = NULL[, $xss_clean = FALSE]])
매개변수:
  • $index (mixed) – COOKIE 이름

  • $xss_clean (bool) – XSS 필터링 적용 여부

반환:

매개변수가 없으면 $_COOKIE, 그렇지 않으면 찾은 경우 COOKIE 값 또는 찾지 못한 경우 NULL

반환 형식:

mixed

이 메소드는 post()get()과 동일하지만 쿠키 데이터를 가져옵니다:

$this->input->cookie('some_cookie');
$this->input->cookie('some_cookie', TRUE); // XSS 필터 적용

여러 쿠키 값의 배열을 반환하려면 모든 필요한 키를 배열로 전달합니다:

$this->input->cookie(array('some_cookie', 'some_cookie2'));

참고

Cookie 헬퍼get_cookie() 함수와 달리 이 메소드는 설정된 $config['cookie_prefix'] 값을 앞에 추가하지 않습니다.

server($index[, $xss_clean = FALSE])
매개변수:
  • $index (mixed) – 값 이름

  • $xss_clean (bool) – XSS 필터링 적용 여부

반환:

찾은 경우 $_SERVER 항목 값, 찾지 못한 경우 NULL

반환 형식:

mixed

이 메소드는 post(), get(), cookie() 메소드와 동일하지만 서버 데이터($_SERVER)를 가져옵니다:

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

여러 $_SERVER 값의 배열을 반환하려면 모든 필요한 키를 배열로 전달합니다:

$this->input->server(array('SERVER_PROTOCOL', 'REQUEST_URI'));
input_stream([$index = NULL[, $xss_clean = FALSE]])
매개변수:
  • $index (mixed) – 키 이름

  • $xss_clean (bool) – XSS 필터링 적용 여부

반환:

매개변수가 없으면 입력 스트림 배열, 그렇지 않으면 찾은 경우 지정된 값 또는 찾지 못한 경우 NULL

반환 형식:

mixed

이 메소드는 get(), post(), cookie()와 동일하지만 php://input 스트림 데이터를 가져옵니다.

매개변수:
  • $name (mixed) – 쿠키 이름 또는 매개변수 배열

  • $value (string) – 쿠키 값

  • $expire (int) – 쿠키 만료 시간(초)

  • $domain (string) – 쿠키 도메인

  • $path (string) – 쿠키 경로

  • $prefix (string) – 쿠키 이름 접두사

  • $secure (bool) – HTTPS를 통해서만 쿠키를 전송할지 여부

  • $httponly (bool) – HTTP 요청(JavaScript 제외)으로만 쿠키에 접근 가능하게 할지 여부

  • $samesite (string) – SameSite 속성 (‘Lax’, ‘Strict’, ‘None’)

반환 형식:

void

지정한 값이 포함된 쿠키를 설정합니다. 쿠키를 설정하기 위해 이 메소드에 정보를 전달하는 두 가지 방법이 있습니다: 배열 방법과 개별 매개변수 방법.

배열 방법

이 방법을 사용하면 첫 번째 매개변수에 연관 배열을 전달합니다:

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

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

참고

이름과 값만 필수입니다. 쿠키를 삭제하려면 만료 시간을 음수 또는 비숫자 값으로 설정하세요.

만료는 단위로 설정되며, 현재 시간에 추가됩니다. 시간을 포함하지 말고 지금부터 쿠키가 유효하길 원하는 초 수만 포함하세요. 만료가 0으로 설정되면 쿠키는 브라우저가 열려 있는 동안만 유지됩니다.

사이트 전체 쿠키의 경우 요청 방식에 관계없이 점으로 시작하는 URL을 domain에 추가합니다: .your-domain.com

메소드가 루트 경로를 설정하므로 경로는 일반적으로 필요하지 않습니다.

접두사는 서버의 동일하게 명명된 다른 쿠키와의 이름 충돌을 피해야 할 경우에만 필요합니다.

httponlysecure 플래그는 생략되면 $config['cookie_httponly']$config['cookie_secure'] 설정으로 기본값이 설정됩니다. samesite 매개변수는 'Lax', 'Strict' 또는 'None'이 될 수 있습니다. 설정되지 않으면 same-site 쿠키 속성은 'Lax'로 기본값이 설정됩니다.

개별 매개변수

원하는 경우 개별 매개변수를 사용하여 데이터를 전달하여 쿠키를 설정할 수 있습니다:

$this->input->set_cookie($name, $value, $expire, $domain, $path, $prefix, $secure, $samesite);
ip_address()
반환:

방문자의 IP 주소 또는 유효하지 않은 경우 ‘0.0.0.0’

반환 형식:

string

현재 사용자의 IP 주소를 반환합니다. IP 주소가 유효하지 않으면 메소드는 ‘0.0.0.0’을 반환합니다:

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

중요

이 메소드는 $config['proxy_ips'] 설정을 고려하며 허용된 IP 주소에 대해 보고된 HTTP_X_FORWARDED_FOR, HTTP_CLIENT_IP, HTTP_X_CLIENT_IP 또는 HTTP_X_CLUSTER_CLIENT_IP 주소를 반환합니다.

valid_ip($ip[, $which = ''])
매개변수:
  • $ip (string) – IP 주소

  • $which (string) – IP 프로토콜 (‘ipv4’ 또는 ‘ipv6’)

반환:

주소가 유효하면 TRUE, 그렇지 않으면 FALSE

반환 형식:

bool

IP 주소를 입력으로 받아 유효 여부에 따라 TRUE 또는 FALSE(boolean)를 반환합니다.

참고

위의 $this->input->ip_address() 메소드는 자동으로 IP 주소를 유효성 검사합니다.

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

IP 형식을 지정하기 위해 선택적 두 번째 문자열 매개변수 ‘ipv4’ 또는 ‘ipv6’을 허용합니다. 기본값은 두 형식을 모두 확인합니다.

user_agent([$xss_clean = FALSE])
반환:

사용자 에이전트 문자열 또는 설정되지 않은 경우 NULL

매개변수:
  • $xss_clean (bool) – XSS 필터링 적용 여부

반환 형식:

mixed

현재 사용자가 사용하는 사용자 에이전트 문자열(웹 브라우저)을 반환하거나 사용 불가능한 경우 NULL을 반환합니다:

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

사용자 에이전트 문자열에서 정보를 추출하는 메소드는 User Agent 클래스를 참조하세요.

request_headers([$xss_clean = FALSE])
매개변수:
  • $xss_clean (bool) – XSS 필터링 적용 여부

반환:

HTTP 요청 헤더의 배열

반환 형식:

array

HTTP 요청 헤더의 배열을 반환합니다. apache_request_headers()가 지원되지 않는 비 Apache 환경에서 실행할 때 유용합니다:

$headers = $this->input->request_headers();
get_request_header($index[, $xss_clean = FALSE])
매개변수:
  • $index (string) – HTTP 요청 헤더 이름

  • $xss_clean (bool) – XSS 필터링 적용 여부

반환:

HTTP 요청 헤더 또는 찾지 못한 경우 NULL

반환 형식:

string

요청 헤더 배열의 단일 항목을 반환하거나 검색한 헤더를 찾지 못한 경우 NULL을 반환합니다:

$this->input->get_request_header('some-header', TRUE);
is_ajax_request()
반환:

Ajax 요청이면 TRUE, 그렇지 않으면 FALSE

반환 형식:

bool

HTTP_X_REQUESTED_WITH 서버 헤더가 설정되어 있는지 확인하고, 설정된 경우 boolean TRUE를, 그렇지 않으면 FALSE를 반환합니다.

method([$upper = FALSE])
매개변수:
  • $upper (bool) – 요청 메소드 이름을 대문자 또는 소문자로 반환할지 여부

반환:

HTTP 요청 메소드

반환 형식:

string

대문자 또는 소문자로 설정하는 옵션과 함께 $_SERVER['REQUEST_METHOD']를 반환합니다:

echo $this->input->method(TRUE); // 출력: POST
echo $this->input->method(FALSE); // 출력: post
echo $this->input->method(); // 출력: post