본문 바로가기

Language/PHP

[PHP] session

반응형
[PHP] session

php_logo

세션(session)은 컴퓨터 과학에서, 특히 네트워크 분야에서 반영구적이고 상호작용적인 정보 교환이며 둘 이상의 통신 장치나 컴퓨터와 사용자 간의 대화나 만남을 의미하는 다이얼로그(dialogue)이다.

넓은 의미에서의 세션은 클라이언트가 서버에 접속하여 접속을 종료하기까지를 의미한다. HTTP 프로토콜은 stateless의 특성을 가져 클라이언트 측의 정보를 유지할 방법이 없다. 따라서 클라이언트에 대한 정보를 서버측에 저장하여 요청을 보낸 클라이언트를 식별하는 방법을 사용한다. 이 때 서버측에 저장하는 데이터를 세션이라고도 한다.

PHP에서도 다른 웹 프로그래밍 언어와 같이 세션을 이용하기 위한 기능을 제공한다.

해당 코드를 통해 session_test.php에 접속하면 $_SESSION 에 키:밸류 형태로 데이터를 저장할 수 있다.

01

index.php에 접속하여 세션 변수에 값이 저장된 것을 확인할 수 있다. php를 통해 $_SESSION 변수에 데이터를 저장/조회를 살펴봤다.

$_SESSION을 통해 php에 데이터를 저장하는 방법을 살펴봤다. 그렇다면 php에서 요청을 보낸 클라이언트를 어떻게 식별하여 데이터를 저장할까? 이에 대한 답은 session_start()함수에 있다. php manual에 나온 설명을 보면 다음과 같다.

session_start() creates a session or resumes the current one based on a session identifier passed via a GET or POST request, or passed via a cookie. php manual

여기서 GET이나 POST나 쿠키를 통해 전달된 세션 식별자를 통해 세션을 생성/다시 시작한다고 설명되어 있다.

session_start()함수를 통해 해당 클라이언트에 대한 고유키를 생성하고, 이 고유키를 클라이언트의 쿠키에 저장한다. 그리고 해당 클라이언트가 요청을 보낼 때 쿠키에 세션키를 담아 보내면, 서버에서는 전달받은 세션키에 해당하는 세션 데이터를 조회하는 것이다.

session_test.php에 접속할 때의 쿠키를 크롬의 개발자 도구를 통해 확인해 봤다.

04

쿠키에 PHPSESSID라는 키에 의미를 알 수 없는 값이 들어왔다. 이 값이 서버로부터 부여받은 클라이언트의 고유 세션키이다. 이 값을 쿠키에 담아 서버에 요청을 보내면, 서버에서는 해당 클라이언트를 구분할 수 있게 되는 것이다.

 

추가적으로 phpinfo()를 통해 세션 설정 정보를 확인하면

01

파일에 세션데이터를 저장하는 것을 확인할 수 있다.

session.save_path의 경로에 있는 파일을 조회하면

05

다음과 같은 파일을 확인할 수 있다. 이 때 파일의 이름이 sess_[sessionkey]인 것을 확인할 수 있다. 즉 세션마다 저장되는 데이터를 각각의 파일에 저장한다는 것이다. 해당 파일을 열어보면

06

위에서 $_SESSION에 저장했던 값들을 확인할 수 있다.

반응형

'Language > PHP' 카테고리의 다른 글

[PHP] require VS include  (0) 2019.05.20
[PHP] psr4  (0) 2019.05.13
[PHP] composer 설치  (0) 2019.05.13
[PHP] autoload  (0) 2019.05.10
[PHP] 웹 프로그래밍  (0) 2019.05.04