php에서 SESSION에 object 저장하기

2014. 2. 13. 18:08 from Dev/php

가끔 DB에 넣고 꺼내고 하기 귀찮기도 하고, 유저가 작업하면서 수정한다거나 하는 일이 잦다면 DB에 넣었다 수정했다 지웠다 하느니 session에 넣어두었다가 다시 꺼내면 유용합니다. 

간단히는 인스턴스 자체를 그냥 serialize($obj) 로 했다가 다시 unserialize 해주는 거지요. 


인스턴스 A를 넣었다가 꺼내보겠습니다 :

<?php
// ... class 정의는 따로 있다고 칩니다 ...
session_start();
include('A.php');
// ...
$a = new A;
$_SESSION["myA"] = serialize($a);
?>


꺼낼 때는 :

<?php
session_start();
include('A.php');
if (isset($_SESSION["myA"]) {
   echo "A was found...";
   $a = unserialize($_SESSION["myA"]);
   var_dump($a);
} else {
   echo "A was not found in the session.";
}
?>


이러면 됩니다. 주의할 점은

  1. 당연히 session_start(); 가 되어야 하고,
  2. 꺼내고 넣고 할 클래스에 대한 정의가 양쪽 페이지에 다 있어야 합니다. 그렇지 않으면 SESSION 오류로 처리됨...

여기까지입니다. 


Posted by banasun :