сеанс codeigniter истекает после использования функции заголовка

#php #codeigniter #session

#php #codeigniter #сеанс

Вопрос:

Мои сеансы истекают после использования этого кода на моем контроллере :

 header("Location: $url?$params");
  

Это основная функция, которая заставит меня перейти на сайт. После выполнения некоторого процесса он перенаправит его обратно на мой сайт.Но там моя сессия истекает.в чем основная проблема, стоящая за этим?

Вот мои настройки сеанса на моем config.php

 $config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 7200;
$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;
  

Комментарии:

1. Вы проверили время истечения сеанса?

2. @AlbinGeorge я обновил свой пост. вы увидите настройки моего сеанса

Ответ №1:

Вам необходимо изменить эту конфигурацию:

 $config['sess_match_useragent'] = TRUE;
  

Для:

 $config['sess_match_useragent'] = FALSE;
  

Попробуйте это и проверьте, надеюсь, это решит вашу проблему.

Комментарии:

1. Используете ли вы это на каком-либо другом устройстве, кроме браузера?

2. сейчас я использую его на своем веб-сайте.

3. Вы сказали which will make me to go to a site. After doing some process,it will redirect it back to my website ? вы имеете в виду какой-то другой домен?

Ответ №2:

Джерахмил Асебуче, насколько мне известно, я могу привести вам пример: если у пользователя изначально не включены файлы cookie, то файлы cookie будут отключены, поскольку идентификатор сеанса, переданный в URL, исчезнет. Вам нужно проверить, установлен ли SID, и если да, перенесите его вместе с URL. здесь; используйте мою функцию вместо header():

PHP-код:

  // perform redirect- supports no cookies AND works with older browsers, too (nice!) 

  function _location($url, $params = '') { 

 if(strlen(SID)) { 

    if (strlen($params)) { 

        $params = '?'.$params.'amp;'.SID; 

} else { 

     $params = '?'.SID; 

    } 

} else { 

    if (strlen($params)) { 

        $params = '?'.$params; 

    } 

} 

   header("Location: ".$url.$params); 

   echo "<h3>You are using an old browser that does not support redirection. 
   Have you       thought about upgrading?<br><br> 

      <a href='".$url.$params."'>Click here to continue using the site.</a></h3>"; 


die;        // never return, no matter what 

 }  
     use it like this: _location('debug.php','flag=true') 
     --note that second argument is    optional but you can pass GEt-style variables 
       this way.to find out what I'm doing here be sure to read php.net/session

good luck,
Jerahmeel Acebuche
  

Комментарии:

1. где я могу это получить. идентификатор сеанса. пожалуйста, просветите меня.