PHP 세션(SESSION) 관리 가이드: 생성, 사용 및 삭제
페이지 정보

본문
그누보드 운영과 PHP 웹 개발 과정에서 사용자 로그인 상태 유지 및 데이터 관리에 필수적인 PHP 세션의 개념부터 시작, 생성, 사용, 그리고 삭제하는 방법을 학습합니다.
PHP 세션 시작 방법 및 주의할 점
PHP에서 세션을 시작하려면 session_start() 함수를 호출해야 합니다. 사용자가 웹사이트에 접속한 뒤 서버에서 상태 정보를 유지하기 위해 이 함수를 호출하면, 새로운 세션을 생성하거나 기존 세션을 복원합니다.
호출 시 주의할 점
- 출력 전 호출 필수:
session_start()함수를 호출하기 이전에는 어떤 내용도 브라우저로 출력되서는 안 됩니다. HTML 태그,echo문, 공백 등 브라우저 출력이나 에코가 발생하기 전에 페이지 맨 위에서 호출해야 합니다. 그렇지 않으면Warning: headers already sent오류가 발생할 수 있습니다. - 중복 호출 방지: 동일한 파일에서
session_start()를 여러 번 실행하면 이미 세션이 실행되었다는 알림이 출력될 수 있으므로,session_id()함수 등을 사용하여 생성된 세션이 있는지 확인한 후 세션을 시작하는 방식을 사용할 수 있습니다. - 세션 이름 변경 시 순서: 기본 세션 이름인
PHPSESSID대신 일시적으로 이름을 변경하려면session_name('변경할 이름')을 사용해야 하는데, 이 함수 역시session_start()보다 위에 입력해야 오류 없이 작동합니다.
PHP 세션 변수 생성 및 사용 방법
PHP에서 세션을 이용해 사용자별 데이터를 저장하고 웹페이지 전반에 걸쳐 유지하려면 $_SESSION 슈퍼글로벌 배열을 사용합니다. 세션을 활용하려면 먼저 세션이 시작되어야 합니다.
1. 세션 시작하기
세션 관련 작업을 수행하기 전에는 반드시 session_start() 함수를 호출해야 합니다. 이 함수는 새로운 세션을 생성하거나 기존 세션에 연결하며, 함수를 호출하기 전에는 어떤 내용도 브라우저로 출력되어서는 안 됩니다.
2. 세션 변수 생성 및 저장하기
session_start() 함수로 세션을 시작한 후에는 슈퍼글로벌 변수인 $_SESSION에 배열 형태로 값을 할당하여 세션 변수를 생성할 수 있습니다. 일반 배열을 이용하듯이 세션 이름을 키값으로 지정하여 데이터를 저장합니다.
session_start(); // 세션 시작
$_SESSION['user_id'] = 'guest'; // 'user_id' 세션에 'guest' 값 저장
3. 세션 값 출력(사용)하기
저장했던 세션 변수를 사용할 때도 session_start() 함수로 세션이 시작된 상태여야 합니다. $_SESSION 슈퍼글로벌 변수를 그대로 이용하여 값을 불러오거나 출력할 수 있습니다.
session_start(); // 세션 시작
echo $_SESSION['user_id']; // 'user_id' 세션의 값 출력
PHP 세션 삭제 및 데이터 파기 방법
PHP에서 세션을 정리할 때는 목적에 따라 unset(), $_SESSION = array(), session_destroy()를 구분해서 사용해야 합니다. 세션 관련 작업을 수행하기 전에는 반드시 session_start() 함수를 먼저 호출해야 합니다.
1. 특정 세션 변수만 삭제 (unset)
- 사용 목적: 여러 세션 변수 중 특정 변수 하나만 골라서 제거하고 싶을 때 사용합니다.
- 사용 방법:
unset($_SESSION['세션변수명']);형태로 작성합니다.
2. 전체 세션 변수 초기화 ($_SESSION = array())
- 사용 목적: 서버에 저장된 세션 파일 자체는 유지하면서 현재 스크립트 내에서 사용 중인 모든 세션 변수 값만 비우고 싶을 때 사용합니다.
- 사용 방법:
$_SESSION = array();를 실행하여 여러 개의 세션 변수가 담긴 배열을 빈 배열로 초기화합니다. - 참고사항:
session_destroy()함수는$_SESSION슈퍼글로벌 배열 자체를 직접 해제하지 않으므로, 완전한 초기화를 위해 빈 배열 대입을 함께 고려할 수 있습니다.
3. 서버에 저장된 모든 세션 데이터 파기 (session_destroy)
- 사용 목적: 로그아웃 등 사용자의 세션 데이터를 완전히 끝내고 서버에 저장된 세션 파일을 삭제할 때 사용합니다.
- 사용 방법:
session_destroy();를 호출합니다. - 주의사항:
session_destroy()는 서버의 세션 파일을 삭제하지만, 세션 ID가 저장된 브라우저의 쿠키나$_SESSION변수 자체를 곧바로 없애지는 않습니다. 따라서 쿠키 삭제나 변수 초기화 처리가 함께 필요할 수 있습니다.
상황별 판단 및 행동 가이드
- 내 상황: PHP 세션을 이용해 로그인 상태 유지나 사용자 정보를 구현하려는 경우
- 우선할 판단: 스크립트 실행 시 브라우저 출력보다 먼저
session_start()를 호출하고 있는지 확인합니다. 이미 세션이 시작되었는지session_id()로 점검하여 중복 호출 오류를 방지합니다. - 다음 행동:
$_SESSION슈퍼글로벌 배열에 필요한 변수와 값을 할당하여 생성·사용하고, 로그아웃 등의 상황에서는unset()이나session_destroy()를 적용하여 세션 데이터를 정리합니다.
실전 FAQ
- Q:
session_start()호출 시headers already sent오류가 발생합니다.- A: 함수 호출 이전에 HTML 태그, 공백,
echo문 등이 브라우저로 출력되면 헤더가 이미 전송되어 오류가 발생합니다. 반드시 PHP 파일의 가장 첫 줄(<?php바로 다음)에session_start()를 배치해야 합니다.
- A: 함수 호출 이전에 HTML 태그, 공백,
- Q:
session_destroy()를 호출했는데도 세션 변수 값이 그대로 남아있습니다.- A:
session_destroy()는 서버에 저장된 세션 데이터 파일을 파괴하지만 현재 메모리에 남아있는$_SESSION슈퍼글로벌 변수 자체를 곧바로 해제하지는 않습니다. 완전한 초기화를 원한다면$_SESSION = array();처리를 함께 병행하는 것이 안전합니다.
- A:
함께 보면 좋은 글
- php.ini 수정 없이 PHP 세션 지속 시간 동적 설정 및 관리 방법
- 오토셋 환경에서 phpMyAdmin 데이터베이스 생성 및 사용자 계정 관리 방법
- 그누보드 자동 삭제 설정의 영향 범위와 데이터 관리 가이드
참고자료
기타 참고자료
- 이전글PHP와 그누보드 환경에서 주요 동영상 플랫폼 URL 링크를 임베드 코드로 변환하여 출력하는 방법 26.10.08
- 다음글PHP 브라우저 언어 설정 기반 페이지 자동 포워딩 구현 방법 26.10.08
댓글목록
등록된 댓글이 없습니다.