홈으로 홈으로 | 무료회원가입 | 아이디/비번찾기 | 즐겨찾기
추천음악방송메인홈1대1상담음악방송청취
뽕짝아가씨(무료음악채널)
okTrot(무료음악채널)
전통가요(무료음악채널)
음악가사 검색
온라이브스토어(앱다운로드)
온라이브(방송등록및청취)
비디오 베스트 50
금영노래방
TJ노래방
유튜브 동영상 다운로드
POP Player
신나는 고스톱
컴퓨터 오목
작은 음악다방
운.영.자.1대1.상담
FAQ\지원.프로그램
Q&A\고.객.지.원

자동러시 웹플레이어신청

보안∵서버∵쿠키
윈도우∵프레임
이미지∵배경
시간∵달력∵계산
상태바∵타이틀바
음악∵영상
폼∵전송∵테이블
키보드∵마우스
효과∵링크∵메뉴
Script∵php
기타
PHP 강좌
윈도우관련팁
웹관련팁
홈페이지제작팁
기본강좌
레지스트리
윈도우서버
리눅스서버
Android
PHP 세션 다루기
7년 전
http://php.net/manual/kr/book.session.php


1) Session의 의미와 구현원리
  PHP 3.0 에서는 4.0으로 올라오면서 가장 눈이 띈 변화라면 세션을 사용할수 있다 라는거겠죠..
이제 세션의 의미를 말씀드린다면 어떤 유저가 어떤 특정 사이트를 접속하여 머물러 있는 시간이라고 말할수 있습니다. 좀 더 어렵게 설명을 한다면, 웹서버는 서로 다른 유저들로부터 서버 내에 있는 페이지를 요청이 들어올 경우에 각 유저들의 컴퓨터에 유일무이한 식별키를 쿠키의 형태로 발급하여 해당 유저가 사용자의정보 즉, 사용자의 로그인이나 기타 입력된 정보를 서버 내에 저장하여 유저가 다시접속하였을때 유저에게 발급한 식별키를 이용하여 서버쪽에 저장해놓은 정보(세션값)를 가져옴으로써 유저를 구별하는 원리로 구현된다고 볼수 있습니다.
다음은 세션과 쿠키의 차이점에 대해서 말씀드리겠습니다.
쿠키가 모든 유저나 회원들의 정보를 사용자의 시스템에 저장하는 반면에 세션은 유저의 데이터를 서버쪽에 저장하여 유저의 시스템에는 서버에 저장되어 있는 해당 사용자의 데이터를 찾아서 가져올 수 있는 식별키만를 저장하기 때문에 유저의 신상정보나 귀중한 정보가 밖으로 빠져나가는것을 막을수 있어 보안측면에서 좀더 안전하다고 할수 있는 있습니다.  
  
  2) Session 다루기
  ① 세션 저장방법

우선 PHP에서 세션 데이타를 서버 상에 저장하는 방법에 대해서 설명을하면
첫번째, 사용자의 데이터를 환경설정 파일(PHP.ini)에서 지정한 디렉토리에 파일로저장하는 방식으로 가장기본적인 방법이라고 할수 있습니다. 자 예를 들어 유저의 시스템에 저장한 식별키가 \"0cd9cdv1vdf4fd4\"이라면 서버 내 지정한 디렉토리에는 \"sess_0cd9cdv1vdf4fd4\"라는 이름을 갖는 파일로 생성하게 됩니다.
그러므로 식별키가 \"0cd9cdv1vdf4fd4\"인 유저가 사이트에 접속했을때 서버에서는 이 식별키에 해당하는 파일을 열어 해당사용자의 정보를 가져오게 되는 방법입니다.

두번째, 서버의 파일이 아닌 서버의 메모리에 저장하는 방식으로 파일로 저장하는 방법보다,높은 성능을 기대할수 있습니다. 특징으로 접속한 유저의 시스템에 식별키를 발급할 때 32개의 문자열로 이루어진 세션 아이디를 생성한다는 점입니다. 이 값은 유저의 시스템에 저장되며 유저가 서버에 접속했을 때 브라우저를 통해 서버에 자동 전송되므로 서버쪽에서 웹사이트에 접속해 있는 유저를 서로 구별할 수 있는 근거가 되겠죠..

세번째, 사용자가 직접 세션을 다루는 방식을 정의하는 방법으로 보통 이 방법을 이용하여 세션 데이터를 파일이나 메모리,혹은 데이타베이스에 저장하여 관리하는 방법입니다. 세번째 방식의 특징은 이렇게 생성한 세션 아이디값은 보통 쿠키 방식을 통해 사용자의 시스템에 저장한다는 점입니다. 그러나 만약에 유저의 브라우저가 쿠키를 허용하지 않도록 설정되어 있다면, 이방식은 아무런 의미가 없겠죠!따라서 이때에는 쿠키가 아닌 다른 방식으로 웹서버에 사용자의 식별키를 전달 할 수 있는 방법을 사용해야 하며 이럴 경우 보통은 웹페이지 요청시에 세션 아이디값을 get이나 post방식을 통해 함께 전달해주는 방식을 사용합니다.


② 세션 생성,등록,삭제및 종료하기

세션을 시작하는 방법은 간단하다..

<?
session_start()
?>

이렇게 세션함수를 호출하면 유저의 시스템에 이전에 발급된 유효 세션이 있는지 확인하게 되고, 검사결과 이전값이 없다면, 새로 세션아이디를 생성하고 이전에 발급한 아이디가 있고, 유효하다면, 서버에 저장한 데이터를 그대로 사용하게 되는것입니다.
이때 세션아이디는 기본적으로 PHPSESSID라는 이름을 갖는 변수에 저장됩니다.
예를 들어 세션 아이디 값이 \"3dff4fdg4h43\"이라면 쿠키 변수 $HTTP_COOKIE_VARS[\"PHPSESSID\"]에 이 세션 아이디값이 저장되는 것입니다.

자 이제 값을 등록시켜봅시다.

<?
session_start()
session_register(\"name\");
$name=\"선즈\";
?>

세션등록은 session_register라는 함수를 사용합니다.
이렇게 등록된 세션 파일 안에는 name|s:4:\"선즈\"; 이라는 내용이 들어가게 됩니다.
세션 변수 삭제방법또한 간단하죠..
위에 보시면 name이라는 변수로 세션을 등록하였습니다.
반대로 삭제하시려면, session_unregister(\"name\");이라고 쓰면 되겠죠..
마지막으로 세션를 종료하려면 session_destory();라는 함수를 쓰면됩니다.
세션을 종료한다는 의미는 현재의 세션과 관련된 모든 데이터를 삭제한다는 의미입니다. 즉 이 함수를 호출한 사용자의 세션에 등록되어 있는 모든 데이터를 완전히 삭제한다는 뜻입니다.

사실 웹서버 측에서 본다면 유저가 언제 웹사이트를 떠났는지 즉 사용자의 세션이 언제 끝났는지 만약 회원일때 로그아웃을 하지 않고 브라우저를 닫았을때 와 같이 그 시점을 알수가 없습니다. 그래서 웹서버가 사용자의 세션을 무효화시킬지를 결정하는 방법을 알려드리겠습니다. php의 세션 설정 항목중에 session.gc_maxlifetime 항목의 값을 수정해주는방법입니다. 보통은 1440초 즉 24분으로 되어있는데 이걸줄여주는방법이 있고,session.gc_probiblty란 항목 이것은 이렇게 더 이상 의미없는 세션데이터를 삭제하는 실행주기를 설정하는 항목으로 기본값은 1로 되어있지만, 1이라함은 1%를 의미합니다. 이값을 늘려주시면 됩니다.~


  
  
  3) Session 처리 함수 소개
  함수 기능
session_start 세션을 생성하는 함수
이때 반드시 알아야 할점은 사용하고자하는 스크립트 최상단에 호출해주어야 합니다.이 함수를 호출하기 전에는 어떤한 함수의 실행결과나 html코드도 먼저 브라우저에 전송되어서는 안된다는얘기죠.. 왜냐면 이 함수는 사용자의 시스템에 세션 아이디를 쿠키의 형태로 발급하기 때문입니다.
만약 이함수를 호출전에 다른 태그를 사용할경우 아래 그림과 같은 메세지가 나올것입니다.

  
  
session_register 현재 연결된 세션에 데이터를 저장할 변수를 등록한다
세션을 등록할때는 보통 변수를 사용하여 등록을 하게 되는데 대략 방법은 다음과 같다.
session_start()
session_register(\"name\");
session_register(\"id\"); $name=\"sunz\";$id=\"sunz\";

이때 session_register(\"name\",\"id\"); 이런식으로되 구문을 줄일수 있습니다.  
  
session_unregister 현재 연결된 세션에서 특정변수를 삭제시키는 함수
예시) session_unregister(\"변수\");  
  
session_unset 현재 연결된 세션에 등록되어 있는 모든 변수의 값을 삭제하는 함수
session_unregister랑 다른점은 변수는 그대로 두고 변수값만 지운다는것입니다.
  
session_destroy 현재의 세션을 종료시키는 함수
  
session_is_registered 세션 변수가 현재의 세션에 등록되어 있는지를 조사하는 함수
session_is_registered(\"string name\")
  
session_save_path 세션 데이터 파일 저장되어 있는 경로를 반환하거나 지정한 디렉토리로 변경하는 함수
보통기본값은 /tmp 디렉토리로 설정되어있습니다.
여기서 유의해야할사항 몇가지!
①php.ini파일에 보시면 session.save_path = /tmp 이라는 옵션이 있는데 이것은 리눅스나 유닉스에 해당하는 디렉토리므로, 윈도우라면 D:/tmp 이런식으로 수정해야 합니다.
②또한 변경하고 하는 디렉토리가 실제 존재해야 하며 디렉토리 권한 은 반드시 777로 해주셔야 합니다.
③이런식으로 디렉토리를 변경할경우에는 해당 세션과 관련된 데이터를 참조하는 모든 스크립트에 session_save_path()함수를 호출해주셔야 합니다.
④마지막으로 세션을 시작하는 session_start()함수 전에 이값을 호출해주셔야 합니다.
  
session_name 현재의 세션 이름를 반환하거나 지정한 이름으로 변경하는 함수
이 함수는 인자 없이 호출하였을 경우 현재 세션의 이름을 반환하는 함수입니다. 그러나 인자를 지정하여 호출할 경우에는 지정한 값으로 현재 세션의 이름을 변경합니다. 기본값은 PHPSESSID라는 이름을 가지며 이 값 또한 php.ini에서 수정할수 있습니다.


session.name=PHPSESSID<--수정해주면 번거러움을 덜수있겠죠!

위의 session_save_path함수처럼 이 함수를 통해 변경한 세션이름은 함수를 호출한 스크립트내에서만 유효하므로 변경된 함수를 사용하실 곳에서는 항상 session_start()함수보다 먼저 호출해주셔야 합니다.
  
session_id 현재의 세션 아이디를 반환하거나 지정한 값으로 변경하는 함수, 현재사용하는 세션 아이디를 구할때나 사용하죠..
  
session_module_name 세션 데이터 다루는 저장 방식에 관한 정보를 반환시키는 함수
첨에 세션의 저장방식에 대해서 설명드릴때 3가지 방법이 있다고했죠,파일저장방법, 메모리저장바업,사용자가 세션을 다루는 방법을 직접정의하는방법이 세가지 방법을 값으로 변환해주는 함수입니다. 이 함수도 PHP환경설정 파일(php.ini)내에서 수정이 가능합니다.

session.save_handler = files; <---기본값이죠

  
  
session_get_cookie_params 세션 쿠키와 관련된 정보를 배열의 형태로 반환시키는 함수
이 함수는 세션 쿠키의 유효 기간과 이 쿠키값을 참조할 수 있는 디렉토리나 도메인 범위 등을 연관 배열의 형태로 반환합니다. 키값은 유효기간을 표시하는 lifetime과 쿠키값을 참조할수 있는 디렉토리값 path 와, 도메인 domain 키값이 있습니다. 기본적으로 lifetime은 0, path는 /, 도메인은 \'\'빈값으로 되어있습니다.
  
session_set_cookie_params 세션쿠키를 발급할 때 필요한 인자를 설정하는 함수
위의 get_cookie_paranms가 정보값을 배열로 반환한다면 이것을 그값들을 설정하는 함수입니다.
  
session_encode 현재의 세션에 저장되어 있는 데이터를 인코딩하여 인코딩된 문자열를 반환하는 함수입니다.
쉽게 말해서 세션을 등록시에 생기는 데이터들, 보통은 파일로저장되는 세션정보를 문자로 변환해준다는 뜻입니다.  
  
session_decode 함수의 인자로 전달한 세션 데이터를 디코딩해주는 함수
  
  
session_cache_limiter 현재 cache limiter 항목의 값으로 설정되어 있는 이름을 반환하거나 이 이름을 지정한 이름으로 변경한다.
유저의 브라우저에 전송되는 HTTP헤더를 이요하여 사용자가 요청한 웹페이지의 내용을 사용자의 시스템에 캐시로 남길 수 있도록 허용할것인지 그 허용수준을 어느정도로 할것인지를 조절하는 항목으로 PHP의 환경설정 파일(php.ini)에서도 이 cache limiter의 단계를 3단계로 구분되도록 되어있습니다. 첫째 nocache는 유저의 시스템에 cache를 보관하지 않으며, 두번째 public은 유저의 시스템에 저장하며, 셋째 private도 마찬가지로 유저가 요청한 페이지를 시스템에 cache로 남지기만 public보다는 좀 엄격합니다.
  
session_set_save_handler 세션을 다룰 수 있는 사용자 정의 함수를 구현한다.



세션함수
http://blog.naver.com/saikyo4713?Redirect=Log&logNo=50072903596

그누보드 세션삭제
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=15945&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%BC%BC%BC%C7%BB%E8%C1%A6&sop=and

[Session]
session.save_handler = files
session.save_path = /tmp
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.gc_maxlifetime = 1440
session.cache_expire = 180


session.save_handler :
기본적으로 Files 방식을 이용한다.
session_module_name() 을 통하여 현재 설정된 정보를 볼 수 있다. 공유 메모리를 사용하는 MM방식과 USER방식을 지원하다.
USER방식을 사용하는 경우에는 session_set_save_handler(string open, string close, string read, string write, string destroy, string gc)을 이용하여 session_set_save_handler("함수명", "함수명", "함수명", "함수명", "함수명", "함수명")과 같이 콜백 함수를 정의하고 콜백 함수를 호출하여 세션 데이터나 세션ID등을 데이터베이스 등에 보관하여 사용할 수도 있다.



session.save_path :
세션 파일을 저장할 경로을 의미하고 files 방식에서는 /tmp가 기본적인 파일이 저장되는 디렉토리의 절대 경로이다.



session.use_cookies :
세션과 함께 쿠키를 사용할 것인가에 대한 설정으로 기본적으로 쿠키와 함께 사용하도록 되어 있다.
쿠키를 사용하지 않는 경우에는 0으로 설정하고 버전에 따라서는 On과 Off로 설정하기도 한다.



session.name :
세션ID를 쿠키에 저장한 경우 PHP에서 세션ID를 확인하기 위한 변수명을 의미한다.
기본값으로 PHPSESSID로 설정되어 있으며$PHPSESSID라고 하면 세션ID를 확인할 수 있다.



session.auto_start :
PHP시작과 동시에 세션이 자동으로 스타트 되도록 하는 옵션이다.
기본값은 0으로 자동으로 시작되지 않도록 되어 있다.
그러므로 세션을 사용하기 전에는 session_start()를 호출해야 하고, 자동으로 시작하게 하려면 1로 설정하면 된다.
버전에 따라서는 On과 Off로 설정하기도 한다.



session.cookie_lifetime :
세션ID를 저장한 쿠키의 활성화 시간 또는 유효 시간을 설정하는 것이다.
기본값으로는 0이 설정되어 있어 브라우저가 종료되면 자동으로 쿠키값은 삭제된다.
session_set_cookie_params()함수를 이용하여 쿠키의 유효 시간을 변경할 수 있으며 PHP.INI를 수정하여 쿠키 적용 시간을 변경 가능하다.



session.cookie_path :
세션ID가 저장된 쿠키가 적용될 유효 경로(디렉토리)를 설정하는 부분이다.
기본값은 "/"로 모든 경로에서 적용 가능하도록 설정되어 있다.
session.cookie_lifetime과 같이 session_set_cookie_params()함수를 이용하여 쿠키의 적용 디렉토리를 변경할 수 있다.



session.gc_maxlifetime :
사용되지 않는 것으로 보이는 세션 데이터를 삭제한다.
세션ID를 삭제하는 것이 아니라 기본 설정 시간인 1440초 동안 아무런 요청이 없을때 자동으로 세션 데이터를 삭제하도록 되어 있다.
이렇게 자동으로 삭제하는 이유는 서버의 부하를 줄이기도 하지만 클라이언트에서 접속을 종료하였는지 여부를 확인할수 없으므로1440초 동안 사용하지 않는 데이터는 삭제하게 한다.



session.cache_expire :
서버에 저장된 세션ID의 활성화 시간이다.
클라이언트에서 브라우저를 닫아버리면 서버에서는 클라이언트가 연결중인지 아닌지 확인하는 방법이 없으므로 미리 세션데이터를 삭제하고 세션ID는 180분 이후에 삭제시킨다.
만약 세션 ID를 삭제하지 않으려면 PHP.INI를 수정하여 시간을 늘려주면 된다.
추천추천 : 269 추천 목록
번호 제목
3,015
 iframe 높이 100% 맞추기
3,014
 curl 함수를 이용한 HTTP REFERER 변경
3,013
 윈도우10 시스템 파일 및 Dism 검사
3,012
 텍스트 줄바꿈, 글자자르기 CSS
3,011
 jQuery Mobile에서 유용한 코드 10가지.
3,010
 [PHP] dirname()함수와 $_SERVER 관련 상수들
3,009
 [PHP] 파일 크기, 사이즈 불러오는 함수, filesize()
3,008
 [jQuery] jQuery Quick API
3,007
 [ transition ] 링크 hover 색상 변화 속도 조절
3,006
 PHP 5.3.0 에서 사라진 함수들 대체
3,005
 어떤 파일들이 include 나 require 되었는지 확인하는 함수(get_included_files)
3,004
 PHP 날짜 형식 및 계산하기(날짜 더하고 빼기)
3,003
 jQuery Mobile에서 유용한 코드 10가지.
3,002
 값이 배열 안에 존재하는지 확인하는 in_array함수
3,001
 사용자가 웹브라우저에서 뒤로가기를 했을때 감지하는 방법
3,000
 [jQuery]버튼 활성화, 비활성화
2,999
 jQuery show() / hide() / toggle() 사용법
2,998
 jquery 여러가지 이벤트
2,997
 border-radius 속성
2,996
 네이버 오픈API 음성합성 API 사용하는 PHP 샘플코드
2,995
 UTF8 한글 자르기..
2,994
 iconv 에러 발생시 계속 처리하기 옵션
2,993
 [PHP] 현재 페이지의 도메인 , URL 정보 알아내기.
2,992
 [PHP] 막강 기능 배열..
2,991
 [CSS] - Input clear `X ` 버튼 제거 ( IE, Chrome, Firefox )
2,990
 [Mobile] - 모바일웹 Href 태그속성들
2,989
 [JqueryMobile] - 현재화면의 가로세로 사이즈 구하기
2,988
 [JqueryMobile] - 화면의 가로, 세로 사이즈 구하는 방법
2,987
 jquery로 가로 넓이(width), 세로 높이(height) 자동 조절
2,986
 iframe 높이 jquery로 자동조절하기
2,985
 jQuery 오른쪽 영역의 높이를 왼쪽 영역의 높이와 동일하게 하기
2,984
 jquery에서 테이블 짝수, 홀수 번째 TR 배경색 변경하기
2,983
 jquery에서 테이블에 마우스 오버시 해당 행의 배경색상 변경하기
2,982
 jquery 스크립트내 특정값 확인하기 (디버깅)
2,981
 jquery cookie (jquery.cookie.js)
목록
인기절정뽕짝파티
트로트재생목록
인기트로트모음
지루박디스코메들리
밤무대애창곡
전자올겐경음악
종합성인가요방
못잊을옛날노래
카바레 음악
트롯디스코팡팡
관광 메들리
트롯카페
가요감상실
추억의옛노래
스페셜가요광장
BillBoard Free
추천가요모음
경음악.전자올겐
스페셜음악여행
WOLRD POPs
K-POP\BillBoard
JP\CN
POP TOP BEST
K.R.노래방

추천가요\인기
F뮤직 인기\발라드
F뮤직 애창\트로트
트로트성인가요
인기가요
프리미엄 POP
경음악\기타
프리미엄 최신가요
프리미엄 성인가요
가요1번지(종합)
뮤직하우스
동요\연변\반주\기타
가요축제\트롯1번지
댄스\메들리\리믹스
카페\명상\경음악\기타
뮤직트로트 부산광역시부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.