php4(zend)¿¡¼­ÀÇ ¼¼¼Ç °ü¸® ÀÛ¼ºÀÚ: ÀÌÈ«±â (1107071@hitel.net; http://www.chonga.pe.kr/) ÀÛ¼ºÀÏ: 2000³â 5¿ù 20ÀÏ ¼öÁ¤ÀÏ: 2001³â 4¿ù 23ÀÏ 0. ¸ñÀû ÀÌ ±ÛÀº ºÐ¸í ¸Å´º¾óÀ» º¸°í ÀÛ¼ºÇÑ °ÍÀ¸·Î °³ÀÎÀûÀÎ ¸ñÀû¿¡ ÀÇÇØ ¸¸µé¾îÁ³À¸¸ç À߸øµÈ Á¡¿¡ ´ëÇؼ­´Â ¸ÞÀÏÀ» º¸³»Áֽñ⠹ٶø´Ï´Ù. ±ÞÁ¶ÇÑ ºÎºÐÀÌ ¸¹¾Æ ¼öÁ¤Çؼ­ »ç¿ëÇؾßÇÒ ºÎºÐµµ ÀÖ±ä ÇÕ´Ï´Ù. ^^; 1. PHP¿¡¼­ÀÇ ¼¼¼Ç °ü·Ã ÇÔ¼öµé.. session_start(); // ¼¼¼ÇIDÀ» Çϳª ÇÒ´çÇÕ´Ï´Ù. session_register("a"); // a¶ó´Â ¼¼¼Ç º¯¼ö¸¦ ¼±¾ðÇÕ´Ï´Ù. session_is_registered("a"); // a¶ó´Â ¼¼¼Ç º¯¼ö°¡ Á¸ÀçÇÏ´ÂÁö °Ë»çÇÕ´Ï´Ù. session_destroy(); // ¼¼¼ÇÀ» Áö¿öÁÝ´Ï´Ù. ÀÌ¿Ü¿¡µµ.. ¸î°¡Áö ´õ ÀÖÁö¸¸ ¿©±â¼­ »ç¿ëÇÏ´Â °ÍÀº.. ÀÌ Á¤µµ¸é µÇ°ÚÁÒ. 2. PHP¿¡¼­´Â ¼¼¼ÇID¸¦ Ŭ¶óÀ̾ðÆ® »óÀÇ À¯Áö¹ý *ÄíÅ°·Î ¼¼ÆÃÇÏ´Â ¹æ¹ý *URL·Î ³Ñ°ÜÁÖ´Â ¹æ¹ý(GET/POST) URL·Î ³Ñ°ÜÁÖ´Â ¹æ¹ýÀº nextpage.php?SID=(¼¼¼ÇID) ÀÇ ÇüÅ·Π°è¼Ó ³Ñ±è *URL Auto Forwarding ÀÌ Àִµ¥, URL¿¡ Æ÷ÇÔ½ÃÅ°Áö¸¸ ¼û°ÜÁÖ´Â °Í °°½À´Ï´Ù. (¼¼¹ø°°ÍÀ» Çϱâ À§Çؼ­´Â phpÄÄÆÄÀϽà ¿É¼ÇÀ» ºÙ¿©¾ß ÇÕ´Ï´Ù. --enable-trans-id ¸¦ ºÙ¿©¼­ ÄÄÆÄÀÏÇ϶ó°í ¸Å´º¾ó¿¡´Â ³ª¿Í ÀÖ½À´Ï´Ù.) ±×¸®°í php.ini¿¡¼­µµ ±âº» ¼³Á¤ÀÌ session.use_cookies °¡ 1·Î µÇ¾î ÄíÅ°¸¦ ÀÌ¿ëÇϵµ·Ï µÇ¾î ÀÖÀ¸¸ç ASPÀÇ ¼¼¼Çó¸®¿Í °°Àº ¹æ¹ýÀÔ´Ï´Ù. 3. ¼­¹ö»ó¿¡¼­ ¼¼¼ÇÀÇ ÀúÀå ¹æ¹ý *±âº» ¼³Á¤À¸·Î /tmp¿¡ sess- ·Î ½ÃÀÛÇÏ´Â ÆÄÀÏ ÀúÀå ¹æ¹ý *shared memory·Î ÀúÀåÇÏ´Â ¹æ¹ý *»ç¿ëÀÚ Á¤ÀÇ ¹æ¹ý (»ç¿ëÀÚ Á¤ÀÇ´Â µðºñ¿¡ ÀúÀåÇÏ´Â ¹æ¹ýÀ» Áö¿øÇÕ´Ï´Ù.) php.ini¿¡¼­ ±âº»¼³Á¤Àº session.save_handler¿¡ files¶ó ³Ö°í ¸Þ¸ð¸® ÀúÀå¹æ¹ýÀº mmÀ» ³Ö¾îÁÖ¸é µË´Ï´Ù. ÆÄÀÏÀ̳ª ¸Þ¸ð¸®¿¡ ÀúÀåÇÏ´Â ¹æ¹ýÀº °¡ºñÁö ÄÝ·ºÅÍ(gc)¿¡ °üÇÑ php.ini ¼³Á¤ÀÌ ²À ÇÊ¿äÇÕ´Ï´Ù. ¹Ù·Î ÀúÀåµÈ ¼¼¼Ç Á¦°Å Áֱ⸦ Á¤Çϱâ À§Çؼ­Áö¿ä. ¾Æ·¡´Â °¡ºñÁö ÄÝ·ºÅÍ¿¡ ´ëÇÑ º¯¼ö ¼³Á¤ÀÔ´Ï´Ù. gc_probability ´Â °¡ºñÁö ÄÝ·ºÅ͸¦ ¾ó¸¶³ª ÀÚÁÖ ÇÒ °ÍÀΰ¡¸¦ ÆÛ¼¾Æ®·Î ÁöÁ¤ÇÏ´Â °ÍÀ̸ç 100% ·Î ÁöÁ¤ÇÒ °æ¿ì, ¹Ù·Î¹Ù·Î °»½ÅÇÏ°Ô µË´Ï´Ù. (¿À¹öÇìµå°ÚÁÒ) º¸ÅëÀº 1%¶ó°í Çϴµ¥, ÀÌ°ÍÀº ¾Æ¸¶µµ ¼¼¼Ç°ªµéÀÌ ¾î´ÀÁ¤µµ ÀÌ»ó áÀ» ¶§¿¡¸¸ °¡ºñÁö ÄÝ·ºÅ͸¦ µ¹¸®µµ·Ï ÇÏ´Â °Í °°½À´Ï´Ù. ±×¸®°í ÄíÅ°°¡ ¾Æ´Ñ GET/POST µîÀÇ ¼¼¼ÇIDÀ¯Áö¸¦ ÇϰԵǸé 10-20%·Î °»½ÅÁֱ⸦ ¿Ã·ÁÁÖ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.(»¡¸® ¼ö°ÅÇؾßÇÒ Çʿ伺ÀÌ Àֱ⠶§¹®¿¡) gc_maxlifetime ´Â ¼¼¼ÇÀÌ ¸¶Áö¸·À¸·Î ¾×¼¼½ºµÈ ÈÄ, ¾ó¸¶ÈÄÀÇ expire timeÀ» °¡Áú °ÍÀΰ¡¿¡ ´ëÇÑ ¼³Á¤ÀÔ´Ï´Ù. ÀÌ°ÍÀº ¼­¹ö ³»ºÎÀûÀ¸·Î °¡Áö´Â °ÍÀÌ°í, ¼¼ÆÃÀÌ ÇöÀç 1440(ÃÊ; 24ºÐ)À¸·Î µÇ¾î Àֳ׿ä. 4. ¼¼¼Ç µî·Ï ¹× üũ¿¡ ´ëÇÑ php ¿¹Á¦ ** http://chonga.pe.kr/php3/session_enter¸¦ Âü°íÇϽøé ÃÖ½Å(?)ÀÇ ¼Ò½º¿Í µ¿ÀÛ ¿¹¸¦ º¸½Ç ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ ¿¹Á¦º¸´Ù Á¶±Ý ´õ °»½ÅµÇ¾ú½À´Ï´Ù. ** info.php´Â ÇöÀçÀÇ php.ini¿¡ ¼³Á¤µÈ ȤÀº ±âº»ÀûÀ¸·Î ÁöÁ¤µÈ php ¼³Á¤ º¯¼öµéÀ» º¸¿©ÁÝ´Ï´Ù. ±âº»ÀûÀ¸·Î ¾Æ·¡ÀÇ ¿¹Á¦µéÀº session_lib.php¸¦ Á¦ÀÏ Ã³À½¿¡ includeÇÏ°í ÀÖ½À´Ï´Ù. start.php?session_saved_id=1010101010 ¿Í °°ÀÌ ½ÇÇàÇÏ¸é ¼¼¼ÇÀÌ ÀúÀåµË´Ï´Ù. ÀÌ´Â ²À ¼¼¼Çº¯¼ö¿¡ ´ëÇÑ ÀÎÀÚ¸¦ ¹Þ¾Æ¾ßÇÒ ÇÊ¿ä°¡ ÀÖÀ» °æ¿ìÀ̸ç ÀÌ ¿¹Á¦´Â °Å±â¿¡ ¸ÂÃç Á¦À۵Ǿú½À´Ï´Ù. (start.php¶ó°í ½ÇÇàÇÏ¸é ¼¼¼Ç µî·ÏÀÌ ¾ÈµÊ) next.php°¡ start.php¿¡ ¸µÅ©µÇ¾î Àִµ¥ ÀÌ°Ç ¼¼¼Ç º¯¼ö°¡ ÀúÀåµÇ¾î ´ÙÀ½ ÆäÀÌÁö ¿¡¼­ Á¦´ë·Î µ¿ÀÛÇÑ´Ù´Â °ÍÀ» º¸¿©ÁÖ±â À§ÇÑ °ÍÀÔ´Ï´Ù. ±×¸®°í, next.php¿¡´Â quit_session.php°¡ ¸µÅ©µÇ¾î Àִµ¥ ÀÌ°ÍÀº ¼¼¼ÇÀ» Á¾·á ½ÃÅ°´Â ¿¹¸¦ º¸¿©ÁÖ±â À§ÇÑ °ÍÀ̱¸¿ä. [info.php ÆÄÀÏ]----------------------------------------------------------------- [info.php ÆÄÀÏÀÌ ¿¹]------------------------------------------------------------ [session_lib.php ÆÄÀÏ]---------------------------------------------------------- "); echo "sessionÀÌ ".$session_save_id."°¡ µî·ÏµÇÁö ¾Ê¾Ò½À´Ï´Ù.
"; if (isset($session_save_id)) { // µî·ÏµÇ¸é.. $saved_id = $session_save_id; echo $saved_id." =".$session_save_id." is set
"; session_register("saved_id"); $last_access_time = time(); // ÇöÀç ³¯Â¥ session_register("last_access_time"); echo "ÀÎÁõµÇ¾ú½À´Ï´Ù.
sid:".session_id()."
sname:".session.name."
smodname:".session_module_name()."
".$last_access_time."
"; } else { echo "ÀÎÁõ½ÇÆÐ
"; session_destroy(); echo (""); exit; } } else { if (!session_is_registered("saved_id")) { echo "ÀÎÁõ½ÇÆÐ2 $saved_id -
"; echo (""); exit; } //echo "ÀÌ¹Ì ¼¼¼ÇÀÌ ½ÃÀÛµÈ »óÅÂÀ̹ǷΠ¾Æ¹«·± µ¿ÀÛÀ» ¾ÈÇÑ´Ù.
"; } return; } // checkSession() // ¼¼¼ÇÀÌ À¯ÁöµÇ´ÂÁö °Ë»çÇÏ°í $last_access_time°ú $saved_id¸¦ // °Ë»çÇؼ­ üũÇÑ´Ù. // $last_access_timeÀ» ÇöÀç ½Ã°£°ú °Ë»çÇؼ­ timeout½Ã°£À» ÃÊ°úÇϸé // ¼¼¼ÇÀ» Áö¿öÁØ´Ù. function checkSession() { global $last_access_time,$saved_id; $bfalse=1; if ( (session_is_registered("saved_id")) && (session_is_registered("last_access_time")) ) { echo "saved_id is ".$saved_id. " and $last_access_time
"; $timeout = time() - $last_access_time; if ( $timeout < 60 ) { // ÇöÀç´Â ŸÀӾƿôÀÌ 60ÃÊ À̳»±îÁö´Ù. echo "¼¼¼Ç üũ ¼º°ø
"; $last_access_time = time(); $bfalse=0; } echo "time : ".time()." ".$timeout."
"; } if ($bfalse==1 ) { echo "üũ½ÇÆÐ
"; echo (""); session_destroy(); exit; } // üũ°¡ ¼º°øÇÔ. return; } ?> [session_lib.php ÆÄÀÏÀÇ ³¡]----------------------------------------------------- [start.php ÆÄÀÏ]--------------------------------------------------------------- "; regSession(); checkSession(); ?>
next page [start.php ÆÄÀÏÀÇ ³¡]----------------------------------------------------------- [next.php ÆÄÀÏ]----------------------------------------------------------------- "; checkSession(); ?>

¼¼¼Ç Á¾·á ¿äû [next.php ÆÄÀÏÀÇ ³¡]------------------------------------------------------------ [quit.php ÆÄÀÏ]----------------------------------------------------------------- ¼¼¼ÇÀÌ Á¾·áµÊ. [quit.php ÆÄÀÏÀÇ ³¡]------------------------------------------------------------ 5. Âü°í http://www.php.net/manual/ref.session.php3 http://www.zend.org/zend/tut/session.php