【问题标题】:Codeigniter storing session in databaseCodeigniter 在数据库中存储会话
【发布时间】:2012-03-16 07:10:50
【问题描述】:

我在数据库中存储会话时遇到问题。我的项目有两个部分,第一部分是一个完整的网站,用户来这里安排他们的视频广播,第二部分是 Facebook 应用程序,观众可以来这里观看广播。问题是,当我通过将 sess_use_database 设置为 true 将会话存储在数据库中时,我的网站部分运行正常并且没有出现问题,但是在 facebook 部分中,会话不存储手动值,除了 codeigniters 默认值,但是当我使用 cookie 会话两个部分运行良好。 iframe 中的 codeigniter 会话有什么问题吗?

【问题讨论】:

  • 我不知道 - 我只是在使用会话开发一个 CI 驱动的 FB 应用程序并且没有任何问题。
  • 你用数据库的会话了吗???

标签: php facebook codeigniter session facebook-iframe


【解决方案1】:

我猜你的问题是网络服务器为域名创建了唯一的 id 会话,所以如果我通过 facebook 访问你的网站,我的会话 id 将不同于通过其域访问你的网站,在这种情况下应该使用 cookie 来存储只有会话 id,但所有会话数据都应存储在数据库中。

【讨论】:

  • 使用 cookie 有不同的问题.... safari 不允许 iframe cookie。在我的网站的第三部分中,用户获取他们的广播的嵌入代码并将其粘贴到不同的网站嵌入代码在网站上创建 iframe 以显示他们的广播,在这种情况下,我的会话将不会在 safari 浏览器中维护,这就是为什么我去数据库会话。
【解决方案2】:

我的项目问题已经超过两天了,试图调试我的会话问题,直到我发现问题在于 ci_session 表结构

如果您遇到问题,您的表格应该是这样的:

--
-- Table structure for table `ci_sessions`
--

CREATE TABLE IF NOT EXISTS `ci_sessions` (
  `session_id` varchar(40) NOT NULL,
  `ip_address` varchar(45) NOT NULL,
  `user_agent` varchar(120) NOT NULL,
  `last_activity` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `user_data` text NOT NULL,
  PRIMARY KEY (`session_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    相关资源
    最近更新 更多