Вопрос по php, session, codeigniter – Как уничтожить сессию с закрытием браузера в codeigniter

8

Недавно я разработал веб-приложение с codeigniter. Я сталкиваюсь с проблемой, связанной с сессией, там плохо.

Проблемный сценарий:

Если пользователь A вошел в приложение, то идентификатор пользователя устанавливается в сеансе. После выполнения задания пользователь А закрыл свой браузер и покинул компьютер. Через некоторое время пришел пользователь B, открыл браузер и увидел, что приложение вошло в систему. или когда пользователь B записывает URL-адрес и нажимает введите его, перенаправленный непосредственно в приложение без какой-либо аутентификации с использованием предыдущего сеанса.

Я использовал следующую конфигурацию для сессии:

$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 1800;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = FALSE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;

Теперь мой вопрос: как я могу уничтожить всю сессию с закрытием браузера или вкладки браузера в codeigniter?

Попробуйте установить$config['sess_expire_on_close'] = TRUE;. Sessions - Вызывать ли сеанс автоматически истекающим при закрытии окна браузера. air4x
Вы храните сессии в БД? ajtrichards
@ AlexRichards нет, я не храню сессии в БД. Ariful Islam
это не работает Есть ли другое решение? Ariful Islam

Ваш Ответ

8   ответов
0

config.php" и установите соответственно

$config['sess_expiration'] = -1;
$config['sess_time_to_update'] = -1;
3

Пусть эта кнопка уничтожит сессию с КИвстроенная функция уничтожения.

$this->session->sess_destroy();
это самый вменяемый подход. все же дети рамок хотят, чтобы все было сделано автоматически. именно поэтому рамки не должны использоваться новичками. Sharky
0

в$ config.php файл

change  $config['sess_expiration'] = 7200;

в

$config['sess_expiration'] = 0;
0

приложение / Config / config.php, найдите $ config [‘sess_expiration«]

менять

$config['sess_expiration'] = 7200;

в

$config['sess_expiration'] = -1;
2
0

я не знаю, если у вас уже было решение, но я нахожусь в том же сценарии в CodeIgniter версии 3.0, вconfig.php, перейти кSession Variables раздел и вы можете установить:

$ config ['sess_expiration'] = 0;

'sess_expiration'

The number of SECONDS you want the session to last.
Setting to 0 (zero) means expire when the browser is closed.
Я понял, но что, если вы хотите, чтобы ваш сеанс истекал по разным сценариям? Например, истечь сеанс через один час или когда браузер закрывается. Как вы справляетесь с этим? CodeGodie
Это не работает для меня в CI 3.0. Jim Pannell
6

ваете окно, вызывается обработчик window.onunload

var unloadHandler = function(e){
        //here ajax request to close session
  };
window.unload = unloadHandler;

Чтобы решить проблему перенаправления, на стороне php вы можете использовать счетчик

  class someController  extends Controller {

   public function methodWithRedirection(){

        $this->session->set_userdata('isRedirection', 1);
        //here you can redirect  
   }
}
class homeController extends Controller{
   public function closeConnection(){
        $this->load->library('session');
        if($this->session->userdata('isRedirection')!== 1){
            //destroy session
         }
      }
   }  
Так что используйте встречную сторону php. И когда счетчик равен 0, тогда вы уничтожаете сеанс. artragis
Я редактирую свой ответ, чтобы показать вам, что я имею в виду artragis
да, это решение, но одна проблема с перенаправлением страницы сеанса очищена, а затем приложение исчезло. Ariful Islam
6

config.php файл и наборsess_expire_on_close вtrue.

например

$config['sess_expire_on_close'] = TRUE;
Работал для меня! Mr.Web
не работает в моей программе jned29

Похожие вопросы