我在CI上的配置非常标准。
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 0;
$config['sess_expire_on_close'] = TRUE;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = TRUE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 2000;我不使用过期,因为我正在测试系统,我知道这不是一个好的实践。我使用高sess_time_to_update是因为AJAX请求破坏了会话( CI错误)。
我现在有了一个新的bug,我认为这与我的代码有关,但我不知道如何修复它。
我一直使用一个数据库连接将会话存储在数据库中。显示错误信息的闪存数据一直运行得很好。直到最近。现在,当我引入第二个数据库连接时,闪存数据不会被设置。
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'emp';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
$db['dil']['hostname'] = 'localhost';
$db['dil']['username'] = 'root';
$db['dil']['password'] = '';
$db['dil']['database'] = 'dil';
$db['dil']['dbdriver'] = 'mysql';
$db['dil']['dbprefix'] = '';
$db['dil']['pconnect'] = TRUE;
$db['dil']['db_debug'] = TRUE;
$db['dil']['cache_on'] = FALSE;
$db['dil']['cachedir'] = '';
$db['dil']['char_set'] = 'utf8';
$db['dil']['dbcollat'] = 'utf8_general_ci';
$db['dil']['swap_pre'] = '';
$db['dil']['autoinit'] = TRUE;
$db['dil']['stricton'] = FALSE;设置闪存数据后,使用var_dump和print_r显示它,并打印布尔值: false。当我不使用第二个连接时,它可以正常工作。有什么想法吗?有些人说不要在DB中存储会话,但为了安全起见,我需要这样做。
更新:假设set_flashdata没有将其插入数据库的i,所以我检查了以确定,这就是问题所在。set_flashdata没有插入闪存数据。有两个连接的其他页面工作正常(通知),只是这个页面不工作。
更新2:当我设置闪存数据和退出时,;就在我查看数据库之后,有一条消息:“您需要登录才能看到这个页面”。这是当有人没有登录时设置的。嗯..。肯定发生了一些奇怪的事情..。
更新3:在使用log_message之后(在SESS_WRITE(在log_message/库/会话文件中的函数)中,我看到它正确地设置了消息,但是还有一个额外的刷新.
ERROR - 2012-11-23 15:38:39 --> "logged_in";b:1;}
ERROR - 2012-11-23 15:38:39 -->"logged_in";b:1;s:22:"flash:new:notification";a:2:{s:4:"type";s:7:"success";s:7:"message";s:31:"Image was updated successfully.";}}解决了问题,多亏了mohan.gade,我找到了一个解决方案。
使用我设置的方式处理多个数据库时(默认、db1、db2等)当您将新数据库加载到变量中时,自动加载默认数据库时,它会重置$this->db。
$this->db1 = $this->load->database('db1', TRUE);因此,当使用多个连接时,fix...although而不是fun...is将手动加载所有数据库。
$this->db = $this->load->database('default', TRUE);
$this->db1 = $this->load->database('db1', TRUE);谢谢!
发布于 2012-11-24 19:04:44
你是如何建立数据库连接的?config/autoload库是否包含“数据库”?那就把它移开。手动执行数据库连接。如果您需要同时连接多个数据库,您可以这样做:$emp = $this->load-> database ('emp',TRUE);$dil =$this->load-> guide/database/connecting.html (‘dil’,TRUE);然后以$emp->guide/database/connecting.html()的方式访问数据库函数。
https://stackoverflow.com/questions/13536101
复制相似问题