웹마스터 팁



개판 오분전 세션 구어먹기.

1. session 이 머게??
2. session 열기
3. session 에 변수 저장하기
4. session 에 저장된 변수 지우기.
5. session 의 아이디 이용
6. session 의 기타 기능 - |
7. session 의 기타 기능 - ||





세션 관련 함수를 제대로 이해하기 위해서는 써버 관리 설정의 한 부분을 먼저
이해 해야 할것이 있다.



세션이 시작 되면 브라우저를 위한 세션 공간을 만든다. -- 써버의 어디에 만들까.
어디에 만드냐믄 이건 써버 관리자 꼴리는대로다. 화장실 한켠에 만들고 싶으면
그렇게 설정하믄 된다.
다만 php 문서 작성자가 화장실이 싫으면 이 문서가 실행 되는 동안에 세션 공간이
만들어지는 곳을 정해줄수 있다.
session_save_path("경로"); 함수가 그 역할을 한다.
물론 이것이 실행 되었다고 해서 써버 설정이 바뀌는건 아니고 이 php 문서가 작동하는
동안만 그렇게 바뀌는거다.
이 session_save_path() 함수의 역할이 하나 더 있다.
인자를 넣어주지 않을때 이 함수의 역할은 현재 세션이 만들어진 그 경로를 알수 있게
해준다. 뭔 말인지 알지??




세션에 저장된 변수를 확인해야 할 필요가 있을때가 있을런지도 모를지도 모른다.
세션에 어떠한 변수가 저장 되었는지 확인할때는
session_is_registered("변수이름") 함수를 쓴다.
세션에 확인이 필요한 변수 이름이 저장 되어있으면 true 값을 갖는다.




세션이 시작 되면 써버에 4096바이트의 세션 공간이 생기고(이말 지겹지??) 이 공간에 변수를 저장
한다고 했는데 이글 읽는 사람들 중에 윈도우 컴에 apm 설치해서 공부하는 사람 몇 있을줄
안다. 세션이 시작 되고 나서 루트 디렉토리에 보면 복잡한 이름을 가진 파일 몇개가
새로 생성 된걸 확인할수 있다. 그리고 이 파일들은 브라우저가 닫히거나 새로 열리면 지워졌다가
새로 생겼다가 한다. 이것이 세션 공간이다.
이것을 노트패드 같은걸로 열어보면 저장된 세션 정보를 확인할수 있는데 때로는
저장된 정보를 인코딩 하거나 또는 인코딩 된 정보를다시 디코딩 할때도 있을 것이다.
이럴때 쓰는 함수가 session_encode() 함수와 session_decode() 함수이다.
물론 이렇게 인코딩 해 놓으믄 써버관리자가 슬쩍 그 파일을 열어본대도 뭔 데이터가
저장 되었는지 알아볼수 없을것이다.



상당히 앞부분에서 주절 거렸던 PHPSESSID=3278ac54e47ab4874654632458eecf24 를 뜯어보면
뒤에 복잡한 헥사코드를 session id 라고 하고 이것은 session_id() 함수를 이용해서 알수
있고 참조할수 있고 다른 브라우저에 전달할수 있다고 했다.
그리고 이 긴 헥사코드가 생기는건 써버가 지 꼴리는대로 생성 된다고 했고...브라우저가 닫히면
없어진다고 했다.(지나고 나서 보니 한말 참 많네.....)

이 헥사코드 말고 PHPSESSID 를 session name 라고 한다. 그리고 이것은 써버 관리자가 설정하는
것이다. 내가 작성한 php 문서가 써버에서 실행 되는 동안 이 session name 를 바꾸고 싶을땐
session_name() 함수를 쓴다.
인자를 주면 그 인자대로 session name 가 바뀌고 인자가 없으면 현재 session name 를 알려준다.

session_name("KOREA"); 라고 한다면

PHPSESSID=3278ac54e47ab4874654632458eecf24 는
KOREA=3278ac54e47ab4874654632458eecf24 가 될것이다.