Example #1
0
 public static function change($session_id, $pass = null)
 {
     $email = Session::getEmail();
     $session_id_old = Session::initId();
     if (!$email) {
         //Текущая сессия не авторизированная
         $email = Session::getEmail($session_id);
         if ($email) {
             //А вот новая сессия аторизированна, значит нужно объединить сессии и грохнуть старую
             $newans = Session::recivenews();
             //Нужно это всё записать в базу данных для сессии 1
             Session::writeNews($newans['news'], $session_id);
             //Теперь старую сессию нужно удалить полностью
             //Надо подчистить 2 таблицы
             if ($session_id_old) {
                 //хз бывает ли такое что его нет
                 $conf = Config::get();
                 $tables = $conf['session']['change_session_tables'];
                 //Массив с таблицами в которых нужно изменить session_id неавторизированного пользователя, при авторизации
                 $db = Db::pdo();
                 Each::forr($tables, function &() use($session_id_old, $session_id, &$db) {
                     $sql = 'UPDATE images SET session_id = ? WHERE session_id = ?;';
                     $stmt = $db->prepare($sql);
                     $stmt->execute(array($session_id, $session_id_old));
                     $r = null;
                     return $r;
                 });
                 $sql = 'DELETE from ses_records where session_id=?';
                 $stmt = $db->prepare($sql);
                 $stmt->execute(array($session_id_old));
                 $sql = 'DELETE from ses_sessions where session_id=?';
                 $stmt = $db->prepare($sql);
                 $stmt->execute(array($session_id_old));
             }
         }
     }
     global $infra_session_data;
     $infra_session_data = array();
     if (is_null($pass)) {
         $user = Session::getUser($session_id);
         $pass = md5($user['password']);
     }
     View::setCookie(Session::getName('pass'), $pass);
     View::setCookie(Session::getName('id'), $session_id);
     View::setCookie(Session::getName('time'), 1);
     Session::syncNow();
 }