在Firefox中登录后生成的CodeIgniter 3会话



登录后,我使用用户id和一些信息设置会话。它在谷歌浏览器上运行得非常好。但是在Firefox上登录后会重定向到登录页面。我不知道是什么问题。此外,奇怪的问题是,这在我的本地服务器(如127.0.0.4)上运行良好。此重定向问题发生在实时服务器(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>";
}
}
} 

我在我的认证控制器中设置会话数据,像这样。

$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);

我已经测试了更改会话路径。

我已经修复了这个问题。这是我的config.php。

$root = "http://".$_SERVER['HTTP_HOST'];

正如您所看到的,我像上面那样设置了根。它在我的本地服务器上工作,但当我在服务器上部署它时,服务器协议是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;

现在,工作正常。

相关内容

  • 没有找到相关文章

最新更新