一旦我重定向到另一个控制器,codeigniter会话就会丢失

时间:2014-06-15 10:43:16

标签: php facebook codeigniter session

我在codegniter的会话有问题,对我来说似乎很奇怪!

当我从数据库登录时它起作用,但是当我从Facebook / twitter Api登录时,它只出现在" sociallog"控制器,我检查此社交帐户之前是否记录过!

我用

调试了我的代码
echo "print all data at the session ".print_r($this->session->all_userdata())."\n";

在"社交日志"控制器

 Array
 (
[session_id] => 36356242e5b0f3f0e25e6e0d5f5ca22c
[ip_address] => 127.0.0.1
[user_agent] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
[last_activity] => 1402828004
[user_data] => 
[username] => mary
[id] => 2
[img] => images/profile/0a92617b105ccb08eabcde613eab9cde.jpg
[mail] => al@al.com
[criedt] => 0
[services_no] => 2
[job] => marketeer
[logged_in] => 1
 )

但是当我重定向到家庭控制器时

echo "print all data at the session ".print_r($this->session->all_userdata())."\n";

输出

Array
(
[session_id] => d0f0f2afab107dd75ecf056b79066bbe
[ip_address] => ::1
[user_agent] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
[last_activity] => 1402828385
[user_data] =>  
)  

这意味着我丢失了在会话中加载的所有数据

我真的感到疯狂了! 与chrome / firefox和/ IE

相同的问题

当我直接从数据库登录时,它可以正常工作,我不知道问题是控制器是否重定向到fb api然后返回我加载到会话的数据!

对此有任何建议!

2 个答案:

答案 0 :(得分:1)

我在使用多个数据库时遇到了同样的问题,对我有用的解决方案是:

我在需要的地方手动加载数据库,并将会话保存转为数据库选项,您可以尝试关闭codeigniter中的会话保存选项并检查它是否有效并尝试手动加载数据库,可能不是太多的解决方案,但它对我有用:)

答案 1 :(得分:0)

使用数据库会话。为此。

Config.php中的更改

$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';

并在数据库中添加一个表。

CREATE TABLE IF NOT EXISTS `ci_sessions` (
  `session_id` varchar(40) NOT NULL DEFAULT '0',
  `ip_address` varchar(45) NOT NULL DEFAULT '0',
  `user_agent` varchar(120) NOT NULL,
  `last_activity` int(10) unsigned NOT NULL DEFAULT '0',
  `user_data` text NOT NULL,
  PRIMARY KEY (`session_id`),
  KEY `last_activity_idx` (`last_activity`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;