PHP에서 세션을 저장하는 원리나 어디에 저장하는 지 등에 대해 한번도 생각해 본적이 없었는데.. 
PHP가 세션값을 서버의 특정 경로에 저장했다가 세션을 파기한다고 한다

    - 일단, Session을 생성시키기 위해 로그인 과정을 진행한다
            ** 대락 다음과 같은 코드가 있어야 session 생성 가능
                    
                       <?
session_start();
$_SESSION['user_id'] = $user_id;
$_SESSION['user_name'] = $members[$user_id]['name'];
?>

    정상적으로 로그인에 성공하면 $user_id랑 $members를 $_SESSION의 변수로 등록하여 세션을 구현한다.
    
    일단, session_start() 함수가 호출이 되면 client 측의 브라우저에는 PHPSESSID로 시작하는 세션 토큰이 생긴다.



    그러면 이런 정보를 서버는 어떻게 저장하고 처리할까?

   session_start()가 호출되면 서버는 PHPSESSID를 생성하여 설정된 경로에 "sess_PHPSESSIONID"라는 파일을 생성한다.
   이 때, 파일 안에는 아무값도 저장하지 않으며, 해당페이지에서 세션값이 필요 없는 서비스만 이용이 가능하다.

    


  이 때, 정상적으로 로그인이 이루어지면 파일안에 $user_id와 $members 정보를 저장한다.

   



! 참고 !

session값을 저장하는 경로는 php.ini 설정파일에서 수정이 가능하다.
나의 경우, C:\APM_Setup\temp\session으로 설정하여 해당 파일 내에 저장되는 것!!

** session.save_path를 설정하는 여러가지 방법에 대해 설명하고 있는데
   session.save_path="N;/path"  로 설정하면 설정한 경로내에 session 파일을 몇개까지 저장할 것인지 설정이 가능하다. (N은 정수)
** default로 session.save_path="/" 로 설정되어있음.



이제, 로그아웃 시 세션을 삭제하는 과정을 살펴본다.
세션을 삭제하려면 session_destroy()가 호출되어야 한다.
    ** 대략 다음과 같은 코드가 있어야 세션 삭제 가능 

<?php
session_start();
session_destroy();
?>

정상적으로 session_destroy()가 호출되면 해당 파일안에 저장된 정보를 삭제하고 다시 빈파일이 된다.




+ Recent posts