登录后,我使用用户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;
现在,工作正常。