public function regenerateID($deleteOldSession = false) { $oldID = session_id(); // if no session is started, there is nothing to regenerate if (empty($oldID)) { return; } parent::regenerateID(false); $newID = session_id(); $row = (new Query())->from($this->sessionTable)->where(['session_id' => $oldID])->createCommand($this->db)->queryOne(); if ($row !== false) { if ($deleteOldSession) { $this->db->createCommand()->update($this->sessionTable, ['session_id' => $newID], ['session_id' => $oldID])->execute(); } else { $row['session_id'] = $newID; $this->db->createCommand()->insert($this->sessionTable, $row)->execute(); } } else { $this->db->createCommand()->insert($this->sessionTable, $this->composeFields($newID, ''))->execute(); } }
/** * Updates the current session ID with a newly generated one. * Please refer to <http://php.net/session_regenerate_id> for more details. * @param boolean $deleteOldSession Whether to delete the old associated session file or not. */ public function regenerateID($deleteOldSession = false) { $oldID = session_id(); // if no session is started, there is nothing to regenerate if (empty($oldID)) { return; } parent::regenerateID(false); $newID = session_id(); $collection = $this->db->getCollection($this->sessionCollection); $row = $collection->findOne(['id' => $oldID]); if ($row !== null) { if ($deleteOldSession) { $collection->update(['id' => $oldID], ['id' => $newID]); } else { unset($row['_id']); $row['id'] = $newID; $collection->insert($row); } } else { // shouldn't reach here normally $collection->insert($this->composeFields($newID, '')); } }