세션의 시작
session_start();
세션과 관련된 함수를 사용할때 항상 먼저 사용되어야 하는 함수이다. "난 이 페이지 내에서 세션을 사용하겠다" 라고 이해하면 된다. 이 함수가 호출되기 이전에 어떤 형태의 출력문도 있으면 안된다. 세션을 구동 시키는건 헤더에 포함이 되어야 되는 내용인데 헤더에는 출력문이 포함 될 수 없으므로 출력문이 보이면 그 전까지 내용으로 헤더를 끊어버리기 때문이다. header already sent... 라는 식의 에러가 보이면 이런 헤더 수준의 함수 위치를 잘 살펴 볼 필요가 있다. 그래서 이 함수는 주로 head나 lib파일 같이 고정적으로 include 되는 파일에 포함되어 있다.
세션 등록
$_SESSION['name'] = value;
이 함수가 최신 버전의 사용법이다. 그냥 등록하고 싶은 세션의 이름을 환경변수 배열 형태로 값을 정해주면 끝이다. 예전에 변수가 값을 할당하고 그 값을 세션에 등록시키는 방식보다 훨씬 쓰기 편하다.
session_register(); 는 구버전의 함수로 사용 해서는 안된다.
세션 사용
$_SESSION['name']
등록하는 방식과 똑같이 사용하면 된다. 그냥 배열에 들어간 변수 형태로 생각하면 될 것이다.
세션의 삭제
unset($_SESSION['name']);
최신버전에서 두루두루 사용되는 unset 함수를 이용한다. 세션도 따지고 보면 $_SESSION 이라는 배열에 저장되는 형태이므로 배열의 값을 없애는 unset함수를 이용한다. 간단하게 아무것도 없는 값을 넣고 싶으면
$_SESSION['name']="";
와 같이 사용해도 된다. 어짜피 세션이 있고 없고를 따질 때 if($_SESSION['name']) {} 과 같이 사용되기 때문에 실사용에서는 거의 같은 기능을 한다.
세션 비우기
session_unset();
세션 배열의 모든 값들을 비운다. 세션을 지우는 것은 아니고 그냥 모든 값들만 free시키는 것이다.
$_SESSION = array();
세션이 배열임을 이용하여 array() 함수를 통해 빈 배열을 할당시킴으로써 값을 지우는 방법도 있다. 위 두 방법은 거의 같은 효과를 낸다.
세션의 완전한 소멸
session_destroy();
모든 세션을 소멸시킨다. 세션의 값만 지우는 것이 아니라 세션 파일들까지 모두 지워버린다.
session_unset() vs session_destroy()
거의 비슷한 기능을 하는 함수이다. 어떨 때 어떤 함수를 써야 할까??
대부분의 세션은 시간이 지나면 자동으로 소멸된다. 하지만 여러 이유들에 의해서 찌꺼기처럼 남아있는 세션들 또한 많이 존재한다. 그런 세션들을 지울때 session_destroy() 함수를 사용한다. 그 외에 로그아웃 처리를 하거나 임시적으로 세션을 사용 할 때에는 대부분 개별적인 unset을 활용하는 경우가 많다.
그렇다면 session_unset() 함수는 언제 쓰이는 걸까? 거의 안쓰인다. 인터넷에 찾아보니 deprecated 되었다는 헛소문도 많이 보일 정도이다. 하지만 deprecated 될 정도로 쓸모 없는 함수는 아니다. 모든 회원을 로그아웃 처리 하거나, 곧 다시 등록될 세션의 값만 모두 지우고자 할 때는 세션 파일까지 모두 지우기 보단 값들만 비워 주는게 좋을 때도 있다.
세션 관련 설정
옵션이름 | 기본값 | 효과 |
session.auto_start | 0 (disabled) | 자동으로 세션을 시작한다. |
session.cache_expire | 180 | 세션은 사용자의 활동이 없느면 일정 시간 후 끊어진다. 이 시간을 설정해 준 다. |
session.cookie_domain | none | 호스트 이름을 다은 도메인 체계에서도 세션 변수를 공유하여 하용할 수 있다. |
session.cookie_lifetime | 0 | 세션ID에 대한 쿠키가 사용자의 컴퓨터에 얼마나 오래 남아 있는지를 설정한다. 기본값이 0이라는 것은, 즉 브라우저가 닫히면 쿠키가 사라진다는 뜻이다. |
session.cookie_path | / | 세션 쿠키가 설정되는 경로 |
sessin.name | PHPSESSION | 사용자의 시스템에서 쿠키 이름으로 사용되는 세션의 이름 |
session.save_handler | files | 세션 데이터가 저장되는 장소, 데이터베이스를 지정할 수도 있지만, 그렇게 하기 위해서는 추가적인 함수가 필요하다. |
session.save_path | " " | 세션 데이터가 저장되는 장소, 데이터베이스를 지정할 수도 있자만 그렇게 하기 위해서는 추가적인 함수가 필요하다. |
session.use_cookies | 1 (enabled) | 세션이 클라이언트측에 쿠키를 사용할지 정해준다. |
session.cookie_secure | 0 (disabled) | 쿠키가 안전한 접속을 통해서만 전송되게 할 것인지를 결정한다. |
session.hash_function | 0 (MD5) | 세션 ID를 생성할 때 사용할 해쉬 알고리즘을 정한다. '0'은 MD5(128비트)를 의미하며 '1'은 SHA-1(160비트)를 의미한다, 이 구성 설정은 PHP 5에서 도입되었다. |
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! (0) | 2021.11.02 |
---|---|
[PHP] 정규식 preg_match (0) | 2021.09.24 |
EditPlus VMware FTP 연결 (0) | 2021.08.30 |
[PHP] php apache 연동 (0) | 2021.08.20 |
java ,javac 버전 변경 (0) | 2021.08.19 |
댓글 영역