Skip to content

PHP

session 과 쿠키

Author
siwon
Date
2023-10-24 17:00
Views
720

세션(Session)과 쿠키(Cookie)는 웹 개발에서 사용되는 두 가지 메커니즘으로, 다양한 HTTP 요청 간에 사용자 상태와 데이터를 유지하고 관리하는 데 사용됩니다. 이들은 종종 더 인터랙티브하고 개인화된 웹 애플리케이션을 생성하는 데 사용됩니다.


1. **쿠키(Cookie)**:

   - 쿠키는 사용자 컴퓨터에 저장되는 작은 데이터 조각(일반적으로 텍스트 파일 형태)입니다.

   - 서버에서 클라이언트 브라우저로 보내지며, 그 후에는 모든 이후 요청과 함께 동일한 서버로 다시 전송됩니다.

   - 쿠키는 주로 사용자 환경 설정 추적, 로그인 상태 기억 및 기타 클라이언트 측 데이터 저장에 사용됩니다.

   - 쿠키는 만료 날짜를 가질 수 있으며, 지속적인(브라우저가 닫힌 후에도 사용자 컴퓨터에 저장) 또는 세션 기반(브라우저가 닫힐 때 삭제)으로 설정할 수 있습니다.


2. **세션(Session)**:

   - 세션은 웹사이트 방문 중에 사용자별 데이터를 저장하고 관리하는 서버 측 메커니즘입니다.

   - 사용자가 웹사이트를 방문하면 서버는 사용자와 세션을 연결하는 고유한 세션 식별자를 생성합니다(일반적으로 쿠키에 저장됨).

   - 세션 데이터는 서버에 저장되며, 이는 쿠키보다 보안성이 높게 만듭니다.

   - 세션은 주로 사용자 인증, 쇼핑 카트 및 서버 측 데이터 저장이 필요한 동적 웹 애플리케이션 기능에 사용됩니다.


이들이 함께 작동하는 방식은 다음과 같습니다:


- 사용자가 웹사이트를 방문하면 서버는 해당 사용자를 위한 고유한 세션을 생성하고 세션 ID(일반적으로 쿠키에 저장)를 사용자의 브라우저로 보냅니다.

- 사용자의 브라우저는 이후의 모든 요청과 함께 세션 ID를 보냅니다.

- 서버는 세션 ID를 사용하여 사용자를 식별하고 서버에 저장된 세션 데이터를 검색합니다.

- 세션 데이터는 사용자의 방문 중에 사용자별 정보 및 상태를 유지하는 데 사용됩니다.


요약하면, 쿠키는 사용자 측에 작은 데이터 조각을 저장하는 데 사용되고, 세션은 서버에 사용자별 데이터를 저장하고 관리하는 데 사용됩니다. 이들은 종종 함께 작동하여 동적이고 개인화된 웹 애플리케이션을 만듭니다.

PHP에서 세션 관리는 세션을 생성, 유지 및 삭제하여 여러 HTTP 요청을 통해 사용자별 데이터를 저장하고 관리하는 작업을 의미합니다. PHP는 세션 관리를 위한 내장 함수를 제공하여 세션을 웹 애플리케이션에서 사용하기 상대적으로 쉽게 만듭니다. PHP에서 세션을 관리하는 방법에 대한 단계별 가이드를 제공합니다:


1. **세션 시작**:

   PHP에서 세션을 사용하려면 `session_start()` 함수를 사용하여 세션을 시작해야 합니다. 이 함수는 세션을 사용하려는 모든 페이지의 시작 부분에 배치되어야 합니다. 일반적으로 HTML 출력 이전에 PHP 스크립트의 맨 위에 배치됩니다.


   ```php

   <?php
   session_start();
   // 나머지 PHP 코드
   ?>

   ```


2. **세션 변수 설정**:

   사용자별 데이터를 저장하려면 세션 변수를 설정할 수 있습니다. 이러한 변수는 세션이 활성 상태인 한 다른 페이지에서 사용할 수 있습니다.


   ```php

   $_SESSION['username'] = 'john_doe';
   $_SESSION['user_id'] = 123;

   ```


3. **세션 데이터에 액세스**:

   세션 데이터를 검색하려면 간단히 `$_SESSION` 슈퍼글로벌 배열에 액세스하면 됩니다.


   ```php

   $username = $_SESSION['username'];
   $user_id = $_SESSION['user_id'];

   ```


4. **세션 존재 여부 확인**:

   세션 변수에 액세스하기 전에 변수가 존재하는지 확인하는 것이 좋습니다. 이를 위해 `isset()`를 사용할 수 있습니다.


   ```php

   if (isset($_SESSION['username'])) {
       // 세션 변수가 존재하면 해당 변수를 사용
   }

   ```


5. **세션 종료**:

   사용자의 세션을 종료하려면 `session_destroy()` 함수를 사용할 수 있습니다. 이려면 사용자와 연관된 모든 세션 데이터가 삭제됩니다.


   ```php

   session_destroy();

   ```


6. **세션 시간 제한**:

   PHP 세션은 기본적으로 시간 제한이 있습니다. 사용자가 일정 기간 동안 비활성 상태인 경우 세션은 만료됩니다. 세션 시간 제한은 `php.ini` 파일에서 `session.gc_maxlifetime` 지시문을 수정하여 조절할 수 있습니다.


7. **세션 구성**:

   `session_set_save_handler()` 함수를 사용하여 세션 처리의 다양한 측면을 구성할 수 있으며, `session_set_cookie_params()` 함수를 사용하여 세션 설정을 수정할 수 있습니다.


8. **보안 고려 사항**:

   세션을 일반적인 보안 문제(세션 고정, 세션 탈취 및 세션 데이터 조작)로부터 보호하기 위해 적절한 인증 및 세션 재생성 기술을 사용하여 보안을 강화해야 합니다.


이것은 PHP에서 세션 관리의 기본적인 개요입니다. 세션은 웹 애플리케이션에서 사용자별 데이터를 유지하고 사용자 상태를 관리하는 데 널리 사용됩니다. 사용자 데이터와 개인 정보를 보호하기 위해 세션을 안전하고 적절하게 사용하는 것이 중요합니다.

Total 0

Total 45
Number Title Author Date Votes Views
40
php formatter
siwon | 2024.11.26 | Votes 0 | Views 238
siwon 2024.11.26 0 238
39
html center 중앙정렬 tailwind
siwon | 2024.07.27 | Votes 0 | Views 617
siwon 2024.07.27 0 617
38
dropdown menu alpinejs 사용 버전
siwon | 2024.04.30 | Votes 0 | Views 696
siwon 2024.04.30 0 696
37
dropdown menu 간단 버전
siwon | 2024.04.30 | Votes 0 | Views 651
siwon 2024.04.30 0 651
36
The Standard PHP Library (SPL) is a collection of classes and interfaces that provide core functionality to PHP developers.
siwon | 2023.10.24 | Votes 0 | Views 1031
siwon 2023.10.24 0 1031
35
session 과 쿠키
siwon | 2023.10.24 | Votes 0 | Views 720
siwon 2023.10.24 0 720
34
Late Static Binding (LSB):메서드 내부에서 현재 클래스의 정적 메서드 또는 프로퍼티를 호출할 때 사용
siwon | 2023.10.24 | Votes 0 | Views 699
siwon 2023.10.24 0 699
33
PHP 예외 처리(Exception Handling)
siwon | 2023.10.10 | Votes 0 | Views 853
siwon 2023.10.10 0 853
32
php exception
siwon | 2023.10.10 | Votes 0 | Views 1171
siwon 2023.10.10 0 1171
31
예외(Exception)를 처리하기 위해 try...catch 블록을 사용하는 방법
siwon | 2023.10.10 | Votes 0 | Views 757
siwon 2023.10.10 0 757
30
Preserving Parent Class Functionality in overriding
siwon | 2023.09.26 | Votes 0 | Views 606
siwon 2023.09.26 0 606
29
oop 세부항목
siwon | 2023.09.26 | Votes 0 | Views 607
siwon 2023.09.26 0 607
28
method chaining
siwon | 2023.09.25 | Votes 0 | Views 715
siwon 2023.09.25 0 715
27
interface implements
siwon | 2023.09.19 | Votes 0 | Views 632
siwon 2023.09.19 0 632
Re:interface implements
siwon | 2023.10.24 | Votes 0 | Views 533
siwon 2023.10.24 0 533
26
abstract class : 부모 class로 사용되며 자식(extends 한)에게 abstract method를 강제함(그들만의 방식으로)
siwon | 2023.09.19 | Votes 0 | Views 601
siwon 2023.09.19 0 601
25
isset() / unset()
siwon | 2023.09.18 | Votes 0 | Views 661
siwon 2023.09.18 0 661
24
magic methods-어떤 상황이 되면 call 하지 않아도 자동으로 실행되는 메소드
siwon | 2023.09.18 | Votes 0 | Views 661
siwon 2023.09.18 0 661
23
MD(markdown) file
siwon | 2023.09.12 | Votes 0 | Views 679
siwon 2023.09.12 0 679
22
usort
siwon | 2023.08.30 | Votes 0 | Views 620
siwon 2023.08.30 0 620
21
closure=unanimous function
siwon | 2023.08.30 | Votes 0 | Views 688
siwon 2023.08.30 0 688
php 7.4에서 추가 화살표 함수 fn()=>
siwon | 2023.10.24 | Votes 0 | Views 1283
siwon 2023.10.24 0 1283
20
reference variable &
siwon | 2023.08.29 | Votes 0 | Views 681
siwon 2023.08.29 0 681
참조(reference)한 original variable의 값을 바꿔버리기 때문에 조심해서 써야함
siwon | 2023.08.30 | Votes 0 | Views 718
siwon 2023.08.30 0 718
19
PHP 변수 : 스칼라(Scalar), 복합(Composite), 그리고 리소스(Resource)
siwon | 2023.08.22 | Votes 0 | Views 751
siwon 2023.08.22 0 751
18
if : vs {}
siwon | 2023.08.22 | Votes 0 | Views 580
siwon 2023.08.22 0 580
17
null coalescing operator
siwon | 2023.08.18 | Votes 0 | Views 768
siwon 2023.08.18 0 768
16
arrary functions
siwon | 2023.08.18 | Votes 0 | Views 626
siwon 2023.08.18 0 626