【发布时间】:2018-03-26 15:49:45
【问题描述】:
我正在为一个如此奇怪的会话问题而苦苦挣扎,我什至不知道如何开始调试它。
我有一个 CI 3.0.0 项目已经启动并运行(并不断开发)好几年了。
上周我切换到一个新的托管服务,从那以后,我一直遇到会话问题,会话数据在不同的时间间隔内不断重置。
托管公司已切换到新主机 - 他们说他们照原样复制了整个 cPanel 帐户,包括文件和数据库。我在新服务器上所做的一项更改是将之前未设置的 cookie_domain 定义为“.mydomain.com”。
当我开始遇到会话问题时,我将其改回$config['cookie_domain'] = '';,但这并没有帮助。
我在 config.php 中的 session/cookie 设置如下:
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 14400;
$config['sess_save_path'] = 'ci_sessions3';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
$config['cookie_prefix'] = '';
$config['cookie_domain'] = '';
$config['cookie_path'] = '/';
$config['cookie_secure'] = FALSE;
$config['cookie_httponly'] = FALSE;
我主要使用会话来保存用户登录详细信息,这是我在基本页面模板中使用的,用于检查用户是否已登录并具有适当的权限。如果他们这样做,我会加载请求的页面视图。如果没有,我会加载登录表单。 现在发生的情况是,在用户登录并开始使用系统后,在很短的时间后,他们会被扔回登录表单,好像用户数据已被某种方式重置一样。
if (!$this->session->userdata('admin_logged_in') || empty($this->session->userdata('digital_view_perms')))
{
$main_content = 'admin_digital/login_form';
}
$this->load->view($main_content, @$data_rows, @$prev_code, @$action);
任何关于我应该从哪里开始挖掘问题的指针将不胜感激!
我确定唯一改变的是托管服务。新服务器上的php版本是7.0.28,而旧服务器上的php版本是5.6.33。
谢谢!
【问题讨论】:
-
你必须将你的框架更新到最新版本才能使用 PHP 7
-
谢谢,@ahmad。作为快速修复,我降级到 PHP 5,问题就消失了。现在得找时间把项目升级到CI 3.1.8,再把PHP版本升级回来。另外 - 原来这是旧 CI 版本中的一个已知错误,已在 3.0.3 中修复:codeigniter.com/userguide3/changelog.html#bug-fixes-for-3-0-3
-
你是用ajax登录的吗?
-
@einav 请提供您如何设置会话的代码。
标签: codeigniter session codeigniter-3