러닝PHP 공부 10장 #2

정재훈·2022년 7월 20일

사용자 추적: 쿠키와 세션
웹서버 : 식료품 직원
웹 클라이언트 : 고객

웹클라이언트 주문(/catalog/yak.php 부탁드립니다) -> 서버는 전자적으로 php의 도움을 받아 그에 상응하는 응답 생성

->php엔진과 웹서버는 쿠키를 통해 고객의 정보를 기억하여 요청에 응한다.
->웹서버와 php엔진은 쿠키를 통해 웹 클라이언트를 식별할 수 있다.
->웹클라이언트는 요청을 생성할 때마다 쿠키를 함께 실어보낸다.
->엔진이 쿠키를 읽고 이전의 요청에 동봉됐던 쿠키와 같은 쿠키임을 확인하면,
해당요청 역시 웹클라이언트에서 들어왔음을 알게 된다.

  • 쿠키는 특정 고객과 요청상품을 연결 짓는 역할을 한다.

쿠키는 이름("customer")과 값("77")으로 구성된다.
단일쿠키는 하나의 정보를 지속해서 유지할 때 가장 유용하다.
여러가지 정보를 지속해서 유지해야할 경우에는 php의 세션을 활용
세션은 쿠키를 이용해 사용자를 식별하며 각 사용자의 데이터 모음을 서버에 임시 저장한다.

쿠키 설정 setcookie() 함수 사용
이 함수를 호출하면서 쿠키명과 값을 지정하면 웹 클라이언트가 기억해두었다가 요청에서 서버로 되돌려준다.
값은 문자열이나 숫자

setcookie()를 호출하면 php엔진이 웹 클라이언트에 되돌려줄 응답을 생성할 때 특수한 헤더가 추가된다.
이 헤더는 새로 생성할 쿠키와 관련한 정보를 갖고 있다.

일반적으로 setcookie()는 웹페이지가 아직 아무런 출력을 하지 않았을 때 호출해야한다.
또한 setcookie() 함수를 실행하기 전에는 페이지의 시작 태그인 <?php>

쿠키정보는 웹클라이언트가 쿠키 정보를 담긴 요청을 보냈을 때만 $_CCOKIE에 저장
setcookie()를 호출한다해도 그 즉시 저장되지 않는다.

쿠키의 도메인 설정
setcookie('short-userid','ralph',0,'/','.example.com');

setcookie()에 지정하는 도메인은 서버명의 끝부분과 반드시 일치해야한다.

쿠키 지우는 방법
setcookie('short-userid','');
만료 시각이나 도메인을 기본값이 아닌 특정한 값으로 설정한 쿠키는 삭제할 때도 동일한 설정값을
사용해야 올바르게 삭제된다.

세션활성화
기본적으로 세션은 PHPSESSID라는 쿠키를 사용한다. PHP 엔진은 페이지에서 세션을 시작할 때 이 쿠키가 있는지 확인하고 존재하지 않으면 생성한다. 각 웹 클라이언트는 서로 다른 세션 아이디를 부여 받는다.

페이지에 세션을 사용하려면 스크립트가 시작되는 지점에서 session_start()를 호출한다
이 함수는 setcookie()처럼 출력이 전송되기 전에 호출되어야 한다.
session.auto_start를 On으로 설정

세션데이터는 자동 전역변수인 $_SESSION 배열에 저장된다. 이 배열의 원소들을 읽거나 변경하는 방식으로 세션 데이터를 다룰 수 있다.

세션 설정

  • session_start()
  • session.auto_start 활성화

세션 데이터의 지속시간 : 24분
세션은 사용자 정보를 영구적으로 저장하고자 사용하는 기능이 아니다.
세션은 사용자의 활동을 추적하여 더욱 원활한 브라우징 경험을 실현하는데 사용

session.gc_maxlifetime 설정 지시자는 요청이 반복되기까지 얼마나 오랫동안 세션 활동을 유지할 것인지 결정 기본값은 24분

ini_set() 함수는 session_start보다 먼저 호출해야한다.


**로그인과 사용자 식별**
세션은 특정 사용자와 익명의 관계를 수립

로그인 과정에서 사용자는 두가지 정보 제공
1. 사용자 신원을 나타내는 정보
2. 그것을 증명하는 정보(비밀번호)

세션을 기반으로 사용자 로그인을 추가하는 과정
1. 사용자명과 비밀번호를 요청하는 폼 출력
2. 폼 제출 확인
3. (제출된 비밀번호가 맞다면) 사용자명을 세션에 추가
4. 인증된 사용자만 할 수 있는 작업에서 세션의 사용자명 확인
5. 사용자가 로그아웃하면 세션의 사용자명 삭제

validate_form : 제공된 사용자명과 비밀번호의 유효성을 검사하는 역할을 담당
process_form : 사용자명을 세션에 추가

setcookie()와 session_start()가 페이지 맨위에 있어야하는 이유
웹서버가 웹 클라이언트에 응답을 전송할 때 응답 내용의 대부분은 HTML 문서가 차지한다.

profile
코린이

0개의 댓글