1

我的网站有一些设计问题。下面是介绍:

我有一个简单的动态页面,其中包含一个视频播放器,旁边还有一堆要播放的视频。在视频播放器下有一个由jquery 表单插件驱动的评论部分,因为如果有人在观看时输入评论,我自然不希望页面刷新和重置视频。

因此,页面通过 $_GET 变量获取要播放的视频 ID,然后根据来自 MySQL 数据库的 ID 获取另外 10 个左右的视频链接,并播放第一个并将其余的链接列为播放器旁边的链接。

评论系统很简单。它从 MySQL 表中获取与播放的视频具有相同 ID 的所有评论,并通过前面提到的 jquery 表单插件列出它们。输入新评论后,它会通过定位相同的 ID 再次将评论添加到表中。

由于 ajax 表单插件从包含注释显示/添加代码的外部 PHP 文件中获取注释 - 我必须使用 $_SESSION 变量将信息从主页传递到这些文件。

这就是问题所在:

当客户正常浏览页面时,一切都按我的预期工作。但是当他决定将另一个视频打开到新标签时 - 评论系统崩溃了。

因此,我将视频 ID 从主页的 $_GET 变量传递给 $_SESSION 变量,并使用它让外部 show/add-comments-PHP-files 知道要显示哪些评论。当客户只使用一个选项卡但当他在新选项卡中打开另一个视频时,这工作正常,$_SESSION 变量当然会更新以匹配新选项卡当前正在播放的视频的评论,并且因为这个变量在两个选项卡中都是相同的 - 原始选项卡现在错误地指向新标签的评论。

所以..希望澄清一下:

浏览器标签1:

$_SESSION['now_playing'] = 视频 1

[..client 在第二个选项卡中打开另一个视频]

浏览器标签 2:

$_SESSION['now_playing'] = 视频 2

..从这一点开始,选项卡 1 的评论当然与选项卡 2 相同。

在创建新选项卡或类似的东西时是否有任何技巧来启动新会话?我对这一切都很陌生,所以可能显然很愚蠢。任何如何解决这个问题的指针都将不胜感激 - 即使这是实现评论的更好方法 - 必须在不刷新页面的情况下添加评论.

问候,kitsu

4

1 回答 1

2

您遇到的经典问题是会话数据由 cookie 控制,因此是每个浏览器而不是每个屏幕。

一种方法是在屏幕上设置一个隐藏字段。在处理 get 以创建屏幕时,将其设置为唯一值,并将该值用作会话数据的键。

然后将值与 ajax 请求一起传回 - 因此每个屏幕的请求都由会话数据的不同部分处理。

于 2012-08-20T23:15:57.120 回答