diff --git a/common/framework/session.php b/common/framework/session.php index e52df455b..bcc5376e0 100644 --- a/common/framework/session.php +++ b/common/framework/session.php @@ -447,11 +447,13 @@ class Session */ public static function destroy() { - unset($_SESSION['RHYMIX']); + $_SESSION = array(); self::$_started = false; + self::$_autologin_key = false; self::$_member_info = false; self::_setKeys(); self::destroyAutologinKeys(); + @session_write_close(); @session_destroy(); return true; } diff --git a/common/legacy.php b/common/legacy.php index 9db3dc473..b2c92e581 100644 --- a/common/legacy.php +++ b/common/legacy.php @@ -187,11 +187,12 @@ function getNextSequence() */ function setUserSequence($seq) { - if(!isset($_SESSION['seq'])) + if (!isset($_SESSION['seq']) || !is_array($_SESSION['seq'])) { $_SESSION['seq'] = array(); } - $_SESSION['seq'][] = $seq; + $seq = intval($seq); + $_SESSION['seq'][$seq] = $seq; } /** @@ -202,6 +203,7 @@ function setUserSequence($seq) */ function checkUserSequence($seq) { + $seq = intval($seq); return isset($_SESSION['seq']) && in_array($seq, $_SESSION['seq']); } diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index 6f2ddf9c1..7ec1cf5bf 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -699,6 +699,10 @@ class fileController extends file */ function setUploadInfo($editor_sequence, $upload_target_srl=0) { + if(!isset($_SESSION['upload_info']) || !is_array($_SESSION['upload_info'])) + { + $_SESSION['upload_info'] = array(); + } if(!isset($_SESSION['upload_info'][$editor_sequence])) { $_SESSION['upload_info'][$editor_sequence] = new stdClass(); diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 1f7767c10..6a24fb241 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -2637,14 +2637,9 @@ class memberController extends member */ function destroySessionInfo() { - if(!$_SESSION || !is_array($_SESSION)) return; - - $memberInfo = Context::get('logged_info'); - $memberSrl = $memberInfo->member_srl; - - foreach($_SESSION as $key => $val) + if (!Rhymix\Framework\Session::isStarted()) { - $_SESSION[$key] = ''; + return; } Rhymix\Framework\Session::destroy(); diff --git a/tests/unit/framework/SessionTest.php b/tests/unit/framework/SessionTest.php index 806da9ee3..391af3244 100644 --- a/tests/unit/framework/SessionTest.php +++ b/tests/unit/framework/SessionTest.php @@ -183,8 +183,8 @@ class SessionTest extends \Codeception\TestCase\Test Rhymix\Framework\Session::logout(); $this->assertFalse(isset($_SESSION['RHYMIX']['login'])); - $this->assertFalse($_SESSION['member_srl']); - $this->assertFalse($_SESSION['is_logged']); + $this->assertFalse(isset($_SESSION['member_srl'])); + $this->assertFalse(isset($_SESSION['is_logged'])); Rhymix\Framework\Session::close(); }