웹 쿠키와 세션 + PHP와 apache사용해보기
쿠키와 세션을 사용하는 이유
HTTP프로토콜의 특징,약점을 보완하기 위해서 사용함
HTTP 프로토콜의 특징
1. Connectionless 프로토콜 (비연결 지향)
클라이언트가 서버에 요청(request)를 했을 떄 ,그 요청에 맞는 응답(response)을 보낸 후 연결을 끊는 처리방식이다.
매번 새롭게 연결이 성립되기 떄문에 필요한 경우 연결 시 자신이 누구인지 알려줘야 한다.
2. Stateless 프로토콜
커넥션을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태정보는 유지하지 않는다.
클라이언트와 첫번째 통신에서 데이터를 주고받았어도, 두번쨰 통신에서 이전 데이터를 유지하지 않는다.
그러나,실제로 데이터 유지가 필요한 경우가 많이 발생한다.
정보가 유지되지 않으면, 페이지 이동시 매번 로그인을 하는 불상사가 생길 수 있음
->이를 대처하기 위해 쿠키와 세션을 사용한다.
쿠키
->사용자가 어떤 웹을 방문한 경우 그 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일.
HTTP에서 클라이언트의 상태정보를 클라이언트의 PC에 저장하고 필요시 정보를 사용하거나 참조할 수 있다.
쿠키의 동작 방식
1 클라이언트가 페이지를 요청한다.
2 웹서버는 쿠키를 생성한다.
3 생성한 쿠키의 정보를 담아 HTTP화면을 돌려줄 떄, 클라이언트에 쿠키를 돌려준다.
4 넘겨받은 쿠키는 클라이언트가 소유하다가, 다시 사용자가 서버에 요청할 떄 쿠키를 전송한다.
5 동일한 사이트를 재방문 시 클라이언트 pc에 쿠키가 있는 경우 요청 페이지 + 쿠키를 보낸다
세션
일정 시간 동안 같은 사용자로부터 들어오는 요구를 하나의 상태로 보고, 그 상태를 유지하는 기술이다.
일정 시간이란 방문자가 웹 브라우저를 통해서 웹 서버에 접속한 시점부터 웹 브라우저를 종료(연결을 끝내는)하는 시점이다.
세션은 웹 서버에 웹 컨테이너의 상태를 유지하기위한 정보를 저장한다.
웹 서버의 저장되는 쿠키 = 세션쿠키
각 클라이언트에 고유 세션ID를 부여한다.
세션의 동작 순서
1 클라이언트가 서버에 접속 시 세션 ID를 발급받음
2 클라이언트는 세션 ID에 대해 쿠키를 사용해 저장하여 갖고 있음
3 클라이언트는 서버에 요청할 떄 이 쿠키의 세션 ID를 같이 서버에 전달해서 요청
4 서버는 세션 ID를 전달받고 세션 ID로 세션에 있는 클라이언트의 정보를 가져와서 사용
5 클라이언트 정보를 가지고 서버요청을 서버에서 처리 후 클라이언트에 응답
PHP세팅을 끝냈다(세팅하는게 왤케 어렵지)