Skip to content

PHP

session 과 쿠키

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

세션(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 43
Number Title Author Date Votes Views
38
dropdown menu alpinejs 사용 버전
siwon | 2024.04.30 | Votes 0 | Views 296
siwon 2024.04.30 0 296
37
dropdown menu 간단 버전
siwon | 2024.04.30 | Votes 0 | Views 273
siwon 2024.04.30 0 273
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 364
siwon 2023.10.24 0 364
35
session 과 쿠키
siwon | 2023.10.24 | Votes 0 | Views 397
siwon 2023.10.24 0 397
34
Late Static Binding (LSB):메서드 내부에서 현재 클래스의 정적 메서드 또는 프로퍼티를 호출할 때 사용
siwon | 2023.10.24 | Votes 0 | Views 414
siwon 2023.10.24 0 414
33
PHP 예외 처리(Exception Handling)
siwon | 2023.10.10 | Votes 0 | Views 433
siwon 2023.10.10 0 433
32
php exception
siwon | 2023.10.10 | Votes 0 | Views 408
siwon 2023.10.10 0 408
31
예외(Exception)를 처리하기 위해 try...catch 블록을 사용하는 방법
siwon | 2023.10.10 | Votes 0 | Views 473
siwon 2023.10.10 0 473
30
Preserving Parent Class Functionality in overriding
siwon | 2023.09.26 | Votes 0 | Views 380
siwon 2023.09.26 0 380
29
oop 세부항목
siwon | 2023.09.26 | Votes 0 | Views 386
siwon 2023.09.26 0 386
28
method chaining
siwon | 2023.09.25 | Votes 0 | Views 420
siwon 2023.09.25 0 420
27
interface implements
siwon | 2023.09.19 | Votes 0 | Views 379
siwon 2023.09.19 0 379
Re:interface implements
siwon | 2023.10.24 | Votes 0 | Views 303
siwon 2023.10.24 0 303
26
abstract class : 부모 class로 사용되며 자식(extends 한)에게 abstract method를 강제함(그들만의 방식으로)
siwon | 2023.09.19 | Votes 0 | Views 393
siwon 2023.09.19 0 393
25
isset() / unset()
siwon | 2023.09.18 | Votes 0 | Views 392
siwon 2023.09.18 0 392
24
magic methods-어떤 상황이 되면 call 하지 않아도 자동으로 실행되는 메소드
siwon | 2023.09.18 | Votes 0 | Views 381
siwon 2023.09.18 0 381
23
MD(markdown) file
siwon | 2023.09.12 | Votes 0 | Views 417
siwon 2023.09.12 0 417
22
usort
siwon | 2023.08.30 | Votes 0 | Views 354
siwon 2023.08.30 0 354
21
closure=unanimous function
siwon | 2023.08.30 | Votes 0 | Views 406
siwon 2023.08.30 0 406
php 7.4에서 추가 화살표 함수 fn()=>
siwon | 2023.10.24 | Votes 0 | Views 541
siwon 2023.10.24 0 541
20
reference variable &
siwon | 2023.08.29 | Votes 0 | Views 393
siwon 2023.08.29 0 393
참조(reference)한 original variable의 값을 바꿔버리기 때문에 조심해서 써야함
siwon | 2023.08.30 | Votes 0 | Views 430
siwon 2023.08.30 0 430
19
PHP 변수 : 스칼라(Scalar), 복합(Composite), 그리고 리소스(Resource)
siwon | 2023.08.22 | Votes 0 | Views 451
siwon 2023.08.22 0 451
18
if : vs {}
siwon | 2023.08.22 | Votes 0 | Views 354
siwon 2023.08.22 0 354
17
null coalescing operator
siwon | 2023.08.18 | Votes 0 | Views 430
siwon 2023.08.18 0 430
16
arrary functions
siwon | 2023.08.18 | Votes 0 | Views 355
siwon 2023.08.18 0 355
15
http request form method GET POST
siwon | 2023.08.17 | Votes 0 | Views 396
siwon 2023.08.17 0 396
14
printf()
siwon | 2023.08.17 | Votes 0 | Views 373
siwon 2023.08.17 0 373