diff options
author | dchill42 <dchill42@gmail.com> | 2012-08-27 03:45:35 +0200 |
---|---|---|
committer | dchill42 <dchill42@gmail.com> | 2012-08-27 03:45:35 +0200 |
commit | aee9265602c3bb30a1f7f3dfd562b9b36cc612a4 (patch) | |
tree | b92c3ba77623848f02a5e9a0656b97e080b19d26 /system/libraries/Session | |
parent | b3816b794592873a4e98187e66745544b463e933 (diff) |
Fixed select_driver(), cookie sess_destroy(), and native cookie name conflict
Diffstat (limited to 'system/libraries/Session')
-rwxr-xr-x | system/libraries/Session/Session.php | 11 | ||||
-rwxr-xr-x | system/libraries/Session/drivers/Session_cookie.php | 2 | ||||
-rwxr-xr-x | system/libraries/Session/drivers/Session_native.php | 3 |
3 files changed, 10 insertions, 6 deletions
diff --git a/system/libraries/Session/Session.php b/system/libraries/Session/Session.php index 97eab803f..1f24456a4 100755 --- a/system/libraries/Session/Session.php +++ b/system/libraries/Session/Session.php @@ -141,14 +141,17 @@ class CI_Session extends CI_Driver_Library { $child = str_replace($this->lib_name.'_', '', $driver); if (isset($this->$child)) { - // Make driver current and sync userdata - $this->current = $this->$child; - $this->userdata =& $this->current->get_userdata(); + // See if driver is already current + if ($this->$child !== $this->current) { + // Make driver current and sync userdata + $this->current = $this->$child; + $this->userdata =& $this->current->get_userdata(); + } } else { // Load new driver - $this->load_driver($driver); + $this->load_driver($child); } } } diff --git a/system/libraries/Session/drivers/Session_cookie.php b/system/libraries/Session/drivers/Session_cookie.php index 8ac92e432..89e81386f 100755 --- a/system/libraries/Session/drivers/Session_cookie.php +++ b/system/libraries/Session/drivers/Session_cookie.php @@ -325,7 +325,7 @@ class CI_Session_cookie extends CI_Session_driver { public function sess_destroy() { // Kill the session DB row - if ($this->sess_use_database === TRUE && $this->has_userdata('session_id')) + if ($this->sess_use_database === TRUE && isset($this->userdata['session_id'])) { $this->CI->db->where('session_id', $this->userdata['session_id']); $this->CI->db->delete($this->sess_table_name); diff --git a/system/libraries/Session/drivers/Session_native.php b/system/libraries/Session/drivers/Session_native.php index 04c985574..8ba8e749a 100755 --- a/system/libraries/Session/drivers/Session_native.php +++ b/system/libraries/Session/drivers/Session_native.php @@ -56,7 +56,8 @@ class CI_Session_native extends CI_Session_driver { // Set session name, if specified if ($config['sess_cookie_name']) { - $name = $config['sess_cookie_name']; + // Differentiate name from cookie driver with '_id' suffix + $name = $config['sess_cookie_name'].'_id'; if ($config['cookie_prefix']) { // Prepend cookie prefix |