예제 #1
0
 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();
     }
 }
예제 #2
0
 /**
  * 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, ''));
     }
 }