我在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然后返回我加载到会话的数据!
对此有任何建议!
答案 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;