我需要将不同的发布数据存储到浏览器中的每个标签中。如果我打开同一页面的新实例,则不会在两者之间共享数据。
我的问题:
我正在建立一个CMS来控制我的网站内容。但我会打开同一页面的一些实例(很多标签)。所以我有一个搜索表单来查找我在CMS上创建的新闻。如果我打开一个新闻项目,我会有一个取消按钮,返回上一页(新闻列表)。
问题是新闻列表有分页和过滤形式。例如,我可以通过像“ john doe ”这样的术语进行搜索,然后进入第5页,然后打开一个新闻项目。如果我取消,目前我回到没有过滤器的新闻列表和第一页。
我的解决方案:
好吧,我不想使用history.back()
,因为我可以提交新闻表单并点击后退/取消按钮。所以,我会回到目前的形式,出了什么问题。
我的第二个想法是将$_SESSION
与发送到新闻列表的$_POST
存储在一起,后退按钮会将我发送到/news/list/recovery-session
,这将恢复$_POST
数据来自会议。但它有一个问题:如果我打开两个标签并进行两次搜索,我将只保存最后一个会话。
您的解决方案:
好吧,我可以使用PHP和JS来使它工作。你可以建议我能做些什么。我想与COOKIES合作,但我相信它是由域共享的,而不是通过标签共享,这是一个什么问题。
有人?
答案 0 :(得分:1)
生成唯一ID并将其附加到要提交的表单或隐藏元素。将该唯一ID保存在cookie或会话变量中。比较提交时的两个。
如果第二个标签生成了新ID,则第一个标签将不会评估为真。
答案 1 :(得分:0)
主要问题是在返回新闻列表页面时需要保持返回的状态以及搜索词的状态。有很多方法可以实现这一点,但一种简单的方法是将此数据编码到查询字符串中。
例如,假设您的搜索字词是“john doe”而您在第5页,请将该数据传递到您的新闻页面。
news.php?returnSearchTerm=john+doe&returnPage=5& ....
创建新闻页面后,您可以设置取消链接的格式,以使用正确的参数将您发送回列表页面。
news_list.php?search=john+doe&page=5