我的网站存在一些设计问题。 以下是介绍:
我有一个简单的动态页面,其中包含一个视频播放器,旁边还有一堆视频。在视频播放器下面有一个由jquery form plugin提供支持的评论部分,因为如果有人在观看时输入评论,我自然不希望页面刷新并重置视频。
因此,页面通过$ _GET变量获取要播放的视频ID,然后根据MySQL数据库中的ID获取另外10个视频链接并播放第一个视频链接,并将其余视频链接列为播放器旁边的链接。
评论系统很简单。它从MySQL表中获取与视频播放具有相同ID的所有注释,并通过前面提到的jquery表单插件列出它们。输入新评论后,它会通过定位相同的ID再次将评论添加到表格中。
由于ajax表单插件从包含显示/添加代码的注释的外部PHP文件中获取注释 - 我必须使用$ _SESSION变量将信息从主页传递到这些文件。
这就是问题所在:
当客户端正常浏览页面时,一切都按预期工作..但当他决定打开另一个视频到新标签时 - 评论系统会崩溃。
所以会发生的是我将视频ID从主页的$ _GET变量传递给$ _SESSION变量并使用它让外部show / add-comments-PHP文件知道要显示哪些注释。当客户端只使用一个选项卡但是当他在新选项卡中打开另一个视频时,这可以正常工作,$ _SESSION变量当然会更新以匹配新选项卡当前播放视频的注释,因为这个变量在两个选项卡中都相同 - 原始选项卡现在错误地指出了新标签的评论。
所以..希望澄清一下:
浏览器标签1:
$ _ SESSION ['now_playing'] =视频1
[..客户端将另一个视频打开到第二个标签]
浏览器标签2:
$ _ SESSION ['now_playing'] =视频2
..从这一点来看,标签1的评论当然是一样的 作为标签2的。
在创建新标签或其他类似内容时,是否会有任何技巧来启动新会话?我对这一切都很陌生,所以可能显然有些愚蠢...任何指针如何解决这个问题都会非常感激 - 即使这是一种更好的方式来实现评论 - 添加评论而不刷新页面是必须的
问候,kitsu
答案 0 :(得分:2)
您遇到的典型问题是会话数据由cookie控制,因此每个浏览器不是每个屏幕。
一种方法是在屏幕上显示隐藏字段。处理get以创建屏幕时,将其设置为唯一值,并将该值用作会话数据的键。
然后使用ajax请求传回值 - 因此每个屏幕的请求都使用会话数据的不同部分进行处理。