【问题标题】:codeigniter session is lost once I redirect to another controller一旦我重定向到另一个控制器,codeigniter 会话就会丢失
【发布时间】:2014-06-15 10:43:15
【问题描述】:

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

当我从数据库登录时它可以工作,但是当我从 Facebook/twitter Api 登录时,它只出现在“sociallog”控制器上,我检查此社交帐户之前是否登录过!

我用

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

在“sociallog”控制器上

 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,然后返回我加载到会话的数据!

对此有任何建议!

【问题讨论】:

  • 您是否尝试使用 sociallog 控制器而不是 CI_Controller 扩展家庭控制器?
  • @Cristian ,我收到错误“致命错误:第 3 行的 D:\xampp\htdocs\rungears.com\application\controllers\sociallog.php 中找不到类 'home'”我试图在同一个文件中创建嵌套类但同样的问题,非常感谢你试图帮助 cris,我会继续努力解决它!
  • 你能发布你的控制器代码吗?
  • 这是社交日志控制器 shar.es/P8aZe 和身份验证控制器 shar.es/P8aOv
  • 我注意到您使用 session_start(),您不必使用它..您的框架会为您完成..

标签: php facebook codeigniter session


【解决方案1】:

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

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

【讨论】:

  • 我是通过使用原生 php 会话来实现的,然后在控制器上我将数据从原生会话获取到框架会话
【解决方案2】:

使用数据库会话。为此。

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;

【讨论】:

    猜你喜欢
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 2018-12-13
    • 2013-01-06
    • 2012-08-17
    • 1970-01-01
    相关资源
    最近更新 更多