登录Firefox后重新生成CodeIgniter 3会话

xv8emn3q  于 2022-12-25  发布在  其他
关注(0)|答案(1)|浏览(127)

登录后,我用用户ID和一些信息设置了会话。它在Google Chrome上运行得很好。但是在Firefox上登录后,它被重定向到登录页面。我不知道是什么问题。此外,奇怪的是,这在我的本地服务器(如127.0.0.4)上运行得很好。这个重定向问题发生在live服务器(hostinger)上,而且只发生在Firefox上。
下面是我的config.php

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'eq_session';
$config['sess_expiration'] = 7200;
$config['sess_encrypt_cookie']  = TRUE; // JFRH
$config['sess_table_name'] = 'eq_sessions'; // JFRH
// $config['sess_save_path'] = NULL;
$config['sess_save_path'] = FCPATH . 'public/sess';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
$config['sess_match_useragent'] = FALSE;

该函数是自定义的认证库。

public function sess_validate($redi = FALSE, $sess_upda = FALSE) {
      $CI =& get_instance();
      if ($CI->session->userdata('sess_id')) {
         //Preguntar si la variable de sesión 'usua' existe o si se requiere
         //que los datos de la misma sean actualizados
         if ((!$CI->session->userdata('usua')) || ($sess_upda == TRUE)) {
            $this->__sess_update();
         }
         return TRUE; 
      } else {         
         if (!$redi) {
            return FALSE;
         } else {
            print "<script> window.location.href = '".  base_url('auth')."'; </script>";
         }
      }
   }

我在Auth Controller中设置了会话数据,如下所示。

$this->session->set_userdata('sess_id', $usua->id_usu);
$this->session->set_userdata('sess_na', $usua->nom_usu . " " . $usua->ape_usu);
$this->session->set_userdata('sess_log', $usua->log_usu);

我已使用更改的会话路径进行了测试。

ycl3bljg

ycl3bljg1#

我已经修复了这个问题。这是我的config.php。
第一个月
正如你所看到的,我设置了根目录,就像上面的一行。它可以在我的本地服务器上工作,但是当我在服务器上部署它时,服务器协议是https。这是这个问题的一个原因。所以我这样修复了这个问题。

$protocol = stripos($_SERVER['SERVER_PROTOCOL'],'https') === 0 ? 'https://' : 'http://';
$root = $protocol . $_SERVER["HTTP_HOST"];
$root .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);

$config['base_url'] = $root;

现在,工作正常。

相关问题