inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

PHP 7+ 프로그래밍

48 - 세션 (Sessions)

세션과 쿠키에 대해 질문이 있는데요

280

o2cornholdings

작성한 질문수 4

0

쿠키와 세션에 대해서 개념이 좀 잘 정리가 잘 안되요, 뒤죽박죽 머리에 엉겨있는 것 같은데,

1)클라이언트인 크롬 브라우저에서 쿠키를 생성하면,  session_start() 메서드가 그 쿠기를  sess_[cookie값] 이런식으로 저장하는 것인가요?

2)아래 코드를 보면 세션의 유효시간과, 쿠키의 유효시간을 동시에 설정해주셨거든요,
쿠기는 클라이언트단에서의 인증(?) 과 관련된 것이고 세션은 서버단에서의 유저를 인증하기 위한 수단이잖아요? 
아직 정리가 안되서 혼란스럽긴한데, 크롬브라우저에서 주는 쿠키를 세션 id 로 바꿔서 이용하는 것 같다는 생각이 들거든요. 
이게 맞나요? 쿠키와 세션관련한 프로세스가 어떻게 되는 것인지 궁금합니다.

// 세션의 라이프타 // 초단위
// ini_set('session.gc_maxlifetime', 3);
// session_set_cookie_params(3);


개념들이 파편적으로 있는 것 같아서요, 그런 것들을 한번 훓고 정리할 수 있는 ,
혹시 웹이 작동하는 원리나 개념에 대해서 전반적으로 다루고 있는 좋은 책이 있을까요?

php

답변 1

2

정상우

안녕하세요 :)

Q. 클라이언트인 크롬 브라우저에서 쿠키를 생성하면,  session_start() 메서드가 그 쿠기를  sess_[cookie값] 이런식으로 저장하는 것인가요?

A.

사실 쿠키와 세션은 별개의 개념으로 봐야합니다. 세션은 그저 클라이언트를 판별하기 위해 쿠키를 이용만 할 뿐입니다. 간단 명료하게 이야기하면 쿠키는 클라이언트에 저장되는 값, 세션은 서버에 저장되는 값입니다. 일단 이렇게 정리를 해두시면 좋을 것 같습니다. 세션 생성시 세션의 ID가 클라이언트에 쿠키로 저장되는 것은 단순히 판별하기 위한 것입니다.

Q. 아래 코드를 보면 세션의 유효시간과, 쿠키의 유효시간을 동시에 설정해주셨거든요,
쿠기는 클라이언트단에서의 인증(?) 과 관련된 것이고 세션은 서버단에서의 유저를 인증하기 위한 수단이잖아요? 
아직 정리가 안되서 혼란스럽긴한데, 크롬브라우저에서 주는 쿠키를 세션 id 로 바꿔서 이용하는 것 같다는 생각이 들거든요. 
이게 맞나요? 쿠키와 세션관련한 프로세스가 어떻게 되는 것인지 궁금합니다.

A.

1. 세션이 생성되면 세션 ID가 생성됩니다.
2. 세션파일 또는 데이터베이스 레코드는 서버에 세션 ID를 기반으로 값이 생성됩니다. 세션에 저장되는 값은 파일, 데이터베이스에 저장될 수 있겠습니다. 생성되는 세션 ID는 서버에서 유일무이 한 것으로 클라이언트를 판별하기 위해 사용합니다.
3. session_start() 코드가 담긴 소스를 클라이언트로 응답하게 될 때, 세션 ID가 담긴 쿠키를 설정하여 내보냅니다. 그리고 해당 쿠키의 값과 세션 ID를 비교하며 통신을 합니다. 그럼 왜, 쿠키로 소통을 하는 것일까요? 사실 웹의 근본인 http 프로토콜은 서버에서 응답을 주고나면 클라이언트와 서버가 연결을 끊어버리기 때문에 세션을 판별할 수 없습니다. 따라서 쿠키를 이용하여 ID를 판별하고 세션에 담긴 값을 사용합니다.

A.

개념들이 파편적으로 있는 것 같아서요, 그런 것들을 한번 훓고 정리할 수 있는 ,
혹시 웹이 작동하는 원리나 개념에 대해서 전반적으로 다루고 있는 좋은 책이 있을까요?

Q.

웹이 동작하는 원리에 대해서는 HTTP 완벽 가이드라는 책이 있습니다. 물론 저도 그 책이 너무 길어서 다 보지는 않았습니다. 꽤 두껍습니다. 내용도 심지어 지루하고. 그래도 알고가야 할 내용으로는 Http Methods, Http Headers, Http Messages, 요청과 응답 정도가 있겠습니다.

53강 레이아웃에서 css git 링크 관련 질문입니다.

0

35

2

[섹션 5]레포지토리 소스파일 오류 위치, 수정 제안

0

180

1

add configuratio.. 자체에

0

268

2

터미널에 글이 안써집니다.

0

635

1

일반적으로 쓰이지 않는 폰트 부분

0

465

1

readmore 클릭시 쿼리내용 받아오는게 이해가 안되요

0

497

1

$_GET과 $_POST를 구별하여야한다고 하는데 이건 왜 $_GET입니까 콜백이라서 그런가요? 왜콜백은 그래도 되나요?

0

475

1

xdebug 설치가 안됩니다.

0

401

1

xdebug 설치 확인 페이지가 안열립니다

0

360

1

if ~ elseif ~ else 문법 표준적인 코딩 방법에 대한 질문입니다.

1

523

1

mysqli_stmt_close($stmt) 관련 질문드립니다.

0

319

1

DB_CONNECTION 부분 질문

0

267

1

FILTER_VALIDATE FILTER_SANITIZE 차이를 모르겠습니다.

0

296

1

결과 ...

0

245

1

random_bytes

0

319

1

preg_replace_callback 질문드립니다.

0

437

1

호스팅에 php 코드 업로드하면 hash 로직이 보이진 않을까요?

0

266

1

버퍼링 궁금한 점이 있습니다.

0

287

1

restore_include_path 오류

0

316

1

php 에러발생..

0

3759

3

터미널로 php 실행시 document root 지정

0

244

1

posts가 null이라고 나옵니다.

0

209

2

rand() vs random_int() 차이점?

0

520

1

php 8 로 하시는 분들을 위한 ini 팁

1

513

1