在 cookie 中存储多个表单的选项卡位置 - 如何防止混乱

Storing tab positions of multiple forms in cookie - how to prevent cluttering

提问人:Pekka 提问时间:11/27/2009 最后编辑:Pekka 更新时间:11/27/2009 访问量:146

问:

我有一个基于PHP和HTML的CMS。在 CMS 的每个页面中,都有一个带有基于 Javascript 的选项卡式对话框的表单,该对话框可在多个 DIV 之间切换。

在 CMS 的每个页面中,可以打开预览页面以查看所做的更改,然后返回到 CMS。当用户返回时,我希望打开的选项卡页与他们离开预览时相同。

我目前的方法是在用户每次更改选项卡时更改 cookie 的值(“current_tab”)。

onclick='setCookie("current_tab", 5);'

生成选项卡式对话框时,我检查cookie并将相应的DIV设置为“display: block”。

但是,我需要将 cookie 设置限制为该特定 CMS 页面,而不是所有页面。如果用户更改为其他页面,则不得预先选择该选项卡。

我目前的方法是为每个页面创建一个cookie,例如页面ID 10254:

onclick='setCookie("current_tab_10254", 5);'

并且,作为清理的尝试,在呈现页面时删除该 cookie。但显然,这不会清理设置的每个 cookie,因为用户可以选择不返回表单,或导航到其他页面。我担心系统中的几十个cookie会变得混乱。

有没有人更清楚如何做到这一点?

JavaScript HTML 会话

评论

0赞 Justin Johnson 11/27/2009
这样做可能只是为了简化您的问题,但通常不建议使用 HTML 属性。相反,应以编程方式注册和处理事件。onclick

答:

1赞 Dienow 11/27/2009 #1

尝试通过更改 cookie 的“path”参数来限制 cookie 的可见性。

如果您的应用程序结构不允许这样做,我建议您不要使用这种方法,因为通常每个请求都会发送 cookie,包括对静态信息(图像、css)的请求。

评论

0赞 Pekka 11/27/2009
嗯,有趣的想法,但不要以为它解决了杂乱的问题,是吗?我也许可以相应地更改 CMS 的路径结构,但从长远来看,用户的浏览器中会积聚大量 cookie(每个页面一个)——只是它们的名称相同并且具有不同的基本路径?
0赞 Dienow 12/18/2009
哦,通常我不认为这会影响用户体验 =) 我也有以下疯狂的想法:您可以将设置存储在数据库中。当用户切换选项卡时,您将此存储到 cookie 中,但下次他对您的应用程序进行任何查询时,您都会从 cookie 中删除与选项卡位置相关的所有数据并将其存储到数据库中。我看到的唯一缺点是,对于如此简单的任务来说,它的逻辑太复杂了。
1赞 Justin Johnson 11/27/2009 #2

您为什么担心删除 cookie?它们将过期并自行删除。