Input 클래스¶
Input 클래스는 입력 데이터에 접근하고 사전 처리하기 위한 헬퍼 메소드를 제공합니다.
참고
이 클래스는 시스템에 의해 자동으로 초기화되므로 수동으로 초기화할 필요가 없습니다.
입력 데이터 접근¶
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 스트림 데이터를 가져옵니다.
- set_cookie($name = ''[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = NULL[, $httponly = NULL[, $samesite = NULL]]]]]]]])¶
- 매개변수:
$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
메소드가 루트 경로를 설정하므로 경로는 일반적으로 필요하지 않습니다.
접두사는 서버의 동일하게 명명된 다른 쿠키와의 이름 충돌을 피해야 할 경우에만 필요합니다.
httponly 및 secure 플래그는 생략되면
$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