奇怪的SESSION行为..现在你看到了,现在你没有

时间:2011-05-04 14:18:13

标签: php session cakephp

当我向购物车添加内容时,可以立即看到会话。一旦我被重定向到购物车视图。会议消失了。

陌生的东西,如果我再次向购物车添加东西,它会更新正确的数量......所以很明显它仍在那里。

我不明白。

我正在使用CakePHP 1.3。我有一个名为CartsController的控制器,其中有2个视图addindexadd视图需要将id的参数添加到购物车。因此,当您转到carts/add/1时,它会将产品ID 1添加到购物车($ _SESSION),然后将您重定向到索引视图(/ carts)。

如果在重定向到索引视图之前在add()函数中添加后立即查看SESSION,则它具有正确的值。到达索引视图时,会话再次为空(它具有默认的Cake Config值,但我没有添加任何内容)。

这会让你相信在它被添加之间和重定向之后的某个地方会被破坏。但事实并非如此,因为如果您再次将项目添加到购物车,然后再次直接查看它,它将显示更高的数量(现在是2而不是1,然后是3然后是4等等。)但是如果您查看其他地方的会议,它不在那里。

有没有人知道这里会发生什么?


更新

我想补充一点,它是第一次在您的浏览器中向购物车添加内容时按预定工作,但如果您将网站(通过外部链接)带入购物车中的某些内容并返回,则没有任何内容你的购物车,没有什么可以再添加 - 这就是上面提到的问题开始时。这种情况发生在Chrome,FF,IE中。

UPDATE2

如果您想亲眼看看,请重现

的步骤
  1. 转到 http://216.119.150.158/john/products/1/simon-g-ring
  2. 点击添加到购物车
  3. 点击Google Checkout按钮
  4. 点击 编辑订单 链接返回 上一页(不是后退按钮)
  5. 您的购物车现在已空,您无法再向购物车添加任何内容

2 个答案:

答案 0 :(得分:2)

第一次为HTTP连接创建cookie时,当您返回时,会有第二个用于HTTPS连接的cookie,该cookie仅发送回HTTPS连接。如果您使用相同的协议1(HTTP时间或两次HTTPS)访问该页面,您应该会看到您的购物车。

传递会话cookie一次不安全,一次安全可能会导致安全问题。我写了一篇关于在HTTP和HTTPS协议之间切换的文章:

Switching between HTTP and HTTPS pages with secure session-cookie

但也许通过安全的HTTPS连接更容易连接。

答案 1 :(得分:0)

您可能需要在购物车页面上调用session_start()(或任何CakePHP包装函数)。