【问题标题】:CodeIgniter and Joomla - session data lostCodeIgniter 和 Joomla - 会话数据丢失
【发布时间】:2013-01-28 23:15:12
【问题描述】:

我在这里遇到了一个非常奇怪的问题。

我有两个网站:**A** and **B**

**A** is the landing page (a micro website). **A** is running Joomla.

**B** - payment pages. Coded with CodeIgniter. Uses session library and stores session data in a database.

==================

场景: 用户访问登录页面(网站 A),选择服务包并点击购买。然后他被带到付款页面(网站B)并开始填写他的申请表。 完成后,他将被带到支付网关(由 SecureTrading 提供)并进行支付。成功付款后,用户将被带回网站 B,他必须在此完成申请的最后一部分。

问题: 付款成功后,用户被重定向回网站B,但由于某种原因,所有会话数据都丢失了。

什么时候发生: 仅当用户从着陆页 (A) 来到时,会话数据才会丢失。 如果我开始填写申请表时没有访问登录页面,那么一切正常。

为什么会这样? 我该如何解决这个问题?

【问题讨论】:

  • 清除您的会话表并执行您列出的步骤。当您到达会话数据丢失的地步时,请检查会话表中的任何一个。 1) 表为空,2) 表有一个条目,但会话数据为空/无效,3) 现在有两个条目。报告结果。
  • 现在有两个条目 - 一个里面有正确的数据(以及主 session_id),同时另一个在付款后添加到数据库中,里面没有数据,除了一个新的 session_id。显然,我的会话由于某种原因被重置......这仅在我从外部站点访问支付页面时发生。 Joomla 与它无关。
  • 您能否将您的代码发布在您确定会话是否存在等的位置,并在检查失败时创建一个会话。这很可能是你的罪魁祸首。系统无法正确确定会话是否已经存在,因此它正在创建一个新会话,从而覆盖用户的会话 cookie,因此不再将有效的会话发送到服务器以检索第一个/真实会话。您可能在多个地方都有这样的问题代码,因此请考虑执行会话检查的所有地方。
  • 没有这样的检查。我只是自动加载会话库。
  • 然后确保域匹配。如果您从 mysite.com 开始并最终在 www.mysite.com 这将是一个不同的会话,因为将为不同的域设置 cookie。

标签: php codeigniter session joomla browser


【解决方案1】:

确保在您的 application/config.php 文件中,您已将以下设置设置为此值:

$config['cookie_domain'] = ".mysite.com";

注意前面的.,它表示cookie 域是站点范围的。这将确保可以从所有子域访问 cookie。这里有更多关于 cookie 域如何工作的 information。您应该始终设置此配置选项,因为它默认为空,因此将使用默认 cookie 设置,这在大多数设置中不是开发人员想要的。

【讨论】:

    猜你喜欢
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多