具有多个选项卡的会话问题

时间:2011-07-13 12:55:11

标签: php session

我在我的页面上搜索了一个过滤器菜单,一个排序选项和一个Pagebrowser。客户希望,如果他搜索某些内容并点击某个产品,然后再点击“返回”或再次“搜索”,则会再次显示相同的搜索和结果。

我不想通过每个链接(坏网址)传递所有搜索参数,因此我将所有这些数据存储在会话中。这很好但有一个问题:

用户按“size = big”打开搜索和过滤器,然后打开新标签页并将过滤器更改为“size = small”。他的会话现在有“size = small”。因此,如果他切换回他的第一个标签并点击那里的“第2页”,那么他会看到第二页,但不是他预期的“size = big”,而是“size = small”。

有没有一种很好的方法来解决这个问题,而不是一直传递所有变量(很多!)?

2 个答案:

答案 0 :(得分:2)

我强烈建议您将搜索结果放入链接中。这可能会使你的链接变得不那么“美丽”,但是当我无法通过发送链接将搜索结果发送给朋友时,我讨厌

但是要回答你的问题:在每个表单中添加一个search_id,它会附加到网址上。然后将搜索保存在特定search_id的会话中。当用户刷新页面时,您可以检查是否传输了POST搜索变量,或者是否存在针对该特定search_id的会话中存储的变量。

答案 1 :(得分:0)

没有。现在,浏览器在所有选项卡上实现cookie,因此您不能在不同的选项卡上使用不同的cookie或会话。因此,存储状态的唯一方法是在URL上。