PHP HTTP 함수 종류와 쿼리 문자열

HTTP 함수 종류

HTTP 함수에는 GET 함수, POST 함수를 포함해 8개의 함수가 정의되어 있습니다.

GET과 POST 이외를 사용하는 경우는 많지 않지만, 우선 8개 함수를 살펴보겠습니다.

함수HTTP/0.9HTTP/1.0HTTP/1.1내용
 GET ○ ○ ○ 지정한 URI 리소스를 취득. HTTP에서 가장 기본적인 동작으로 HTTP/0.9버전의 유일한 함수.
 POST – ○ ○ GET 과는 반대로 클라이언트가 서버에 데이터를 송신. WEB 폼이나 게시판 등에서 사용. GET의 경우에도 서버 측은 클라이언트에 데이터를 반환하는 것이 가능.
 PUT – △ ○ 지정한 URI에 리소스를 저장. URI가 지정한 리소스가 저장되지 않은 경우, 서버는 해당 URI의 리소스를 작성. 사진 업로등에서 사용.
 HEAD – ○ ○ GET과 비슷하지만 서버는 HTTP 헤더만 반환. 클라이언트는 웹페이지의 내용을 취득하지 않고, 웹페이지가 존재하는지만 확인 가능. 예를 들어 웹페이지의 링크가 활성 되어있는지, 모든 데이터를 취득하지 않아도 확인할 수 있음.
 DELETE – △ ○ 지정한 URI 리소스를 삭제.
 OPTIONS – – ○ 서버를 조사. 예를 들어 서버가 지원하는 HTTP 버전 등을 확인할 수 있음.
 TRACE – – ○ 서버까지의 네트워크 경로를 체크. 서버는 받은 메세지 내용 그대로 리스폰스에 복사해 반환.
 CONNECT – – ○ TCP 터널을 접속. 암호화한 메세지를 프로킨 서버를 통해 전송할 때 사용.

 

GET

위에서 본 것처럼 GET 함수는 HTTP의 함수 중 하나입니다.

HTML 파일이나 사진 파일 등을 요구할 때 사용되는 함수입니다.

이제부터 GET 함수가 어떠한 것인지 자세하게 보도록 하겠습니다.

GET 함수는 검색 기능을 구현할 때 자주 사용됩니다.

검색할 때 자주 사용되는 Google에서도 GET 함수를 사용합니다.

다음의 예를 보도록 하겠습니다.

당연한 것이지만 검색할 때에도 HTTP로 데이터를 주고받습니다.

클라이언트에서 리퀘스트를 하고, 서버에서 리스폰스를 처리하는 것으로 검색 결과를 웹페이지에 표시해줍니다.

이때 클라이언트 측은 서버 측에 어떤 키워드로 검색하고 싶은지를 전송해줘야 합니다.

GET 함수에서는 첫 번째 줄인 리퀘스트 라인에 검색하고 싶은 키워드 정보를 설정해서 리퀘스트를 요청합니다.

정보 설정은 리퀘스트 URL 뒤에 작성됩니다.

GET http://google.com/search?q=PHP HTTP/1.1

 

여기서 주목해서 봐야 할 부분은 URL 뒤에 있는 ?뒤의 문자열입니다.

이 문자를 쿼리 문자열(URL파라메터, 리퀘스트 파라메터)이라고 부릅니다.

여러 가지 형태로 불리고 있지만 이 포스팅에서는 쿼리 문자열로 사용하겠습니다.

쿼리 문자열의 의미는 쿼리와 문자라는 2개의 단어로 나눠서 생각할 수 있습니다.

쿼리란, 질문이란 뜻은 가진 단어입니다.

문자열을 그대로 문자를 뜻합니다.

즉 질문을 하는 문자열이란 의미가 됩니다.

GET 함수에서는 검색하고 싶은 키워드를 URL 뒤에 쿼리 문자열 형태로 해서 서버 측에 어떠한 키워드로 검색하고 싶은지 리퀘스트를 합니다.

이러하듯 리퀘스트 라인에 정보를 설정하는 것이 GET 함수의 특징입니다.

리퀘스트 라인에 작성한 정보는 그대로 클라이언트 측에서도 볼 수가 있습니다.

예를 들어 다음과 같이 쿼리 문자열에 ID와 패스워드가 작성된 상태로 표시가 됩니다.

ID를 ponyo라고 입력하고 패스워드를 1234로 입력하면

http://xxxxx.com/?id=ponyo&password=1234

 

GET 함수는 제3자에게 보여줘도 괜찮은 정보라면 문제가 없지만 ID나 패스워드와 같은 개인 정보를 제3자에게 보여주면 안 되는 경우에는 적합하지 않습니다.

그리고 URL로 취득하기 때문에 문자 수에 제한이 있습니다.

internet Explorer의 URL 최대 문자 수는 2,083문자까지 사용 가능합니다.

사용하는 브라우저나 서버등 환경에 따라 최대 문자 수가 다르지만 기본적으로 IE에서는 2,083문자까지입니다.

그렇기 때문에 많은 정보를 전송하는 경우에도 GET 함수는 적합하지 않습니다.

GET 함수의 장점은 쿼리 문자열을 URL 뒤에 설정하기 때문에 하나의 URL로 취득한다는 점입니다.

PHP라는 키워드로 검색해 얻은 결과 페이지를 다른 사람에게 전송하고 싶을 때 http://google.com/search?q=PHP 의 URL을 전송하면 상대방도 PHP로 검색한 결과 페이지를 볼 수 있습니다.

이것이 GET 함수의 장점 중 하나입니다.

다음으로 쿼리 문자열에 작성되어 있는 q=PHP에 대해 보겠습니다.

PHP의 변수나 배열을 이해하고 있지 않으면 조금 어려울 수도 있습니다.

 

 

쿼리 문자열 q=PHP 란?

구글에서 PHP라고 검색할 때에 URL의 가장 뒷부분을 보면 q=PHP라고 되어있습니다.

이것은 이름= 값 이라는 뜻으로 q라는 이름에 PHP라는 값을 설정한다는 의미입니다.

PHP의 경우 q=PHP와 같이 전송된 데이터는 $_GET이라는 슈퍼 글로벌 변수에 연상 배열로 저장이 됩니다.

복잡해 보이지만, 내용을 보면 간단합니다.

어디에서든지 취득할 수 있는 글로벌 변수에 배열 형태로 저장되어 있을 뿐입니다.

 $_GET = array(
	'q' => 'PHP';
)

‘q’는 PHP 배열에서는 키로 불립니다.

보통 배열에서 키는 0,1,2 와 같이 숫자로 되어 있는 경우가 많지만, 위의 배열의 키는 문자로 되어 있습니다.

그렇기 때문에 정확하게 표현하자면 연상 배열이라고 볼 수 있습니다.

연상 배열에 저장된 값을 이용하기 위해서는 $변수명[키]로 취득할 수 있습니다.

슈퍼 글로벌 변수인 $_GET에 저장되어 있는 q의 값을 $search라는 변수에 대입해 화면에 출력하도록 작성한다면 아래와 같습니다.

$search = $_GET['q'];
echo $search;

 

다음 포스팅에서는 POST 함수에 대해 살펴보도록 하겠습니다. 

댓글