【发布时间】:2012-08-16 06:56:11
【问题描述】:
我的网站存在某种设计问题。 介绍如下:
我有一个简单的动态页面,其中包含一个视频播放器,旁边还有一堆要播放的视频。在视频播放器下方有一个由jquery form plugin 驱动的评论部分,因为如果有人在观看时输入评论,我自然不希望页面刷新和重置视频。
因此,页面通过 $_GET 变量获取要播放的视频 ID,然后根据来自 MySQL 数据库的 ID 获取另外 10 个左右的视频链接,并播放第一个并将其余的链接列为播放器旁边的链接。
评论系统很简单。它从 MySQL 表中获取与播放视频具有相同 ID 的所有 cmets,并通过前面提到的 jquery 表单插件列出它们。输入新评论后,它会通过定位相同的 ID 再次将评论添加到表中。
由于 ajax 表单插件从包含注释显示/添加代码的外部 PHP 文件中获取 cmets - 我必须使用 $_SESSION 变量将信息从主页传递到这些文件。
问题出在这里:
当客户正常浏览页面时,一切正常。但当他决定将另一个视频打开到新标签时 - 评论系统崩溃了。
所以发生的情况是,我将视频 ID 从主页的 $_GET 变量传递到 $_SESSION 变量,并使用它让外部 show/add-cmets-PHP-files 知道要显示哪些 cmets。当客户仅使用一个选项卡但当他在新选项卡中打开另一个视频时,这工作正常,$_SESSION 变量当然会更新以匹配新选项卡当前正在播放的视频的 cmets,并且由于此变量在两个选项卡中相同 - 原始选项卡现在错误地指向新标签的 cmets。
所以..希望澄清一下:
浏览器标签 1:
$_SESSION['now_playing'] = 视频 1
[..client 在第二个标签中打开另一个视频]
浏览器标签 2:
$_SESSION['now_playing'] = 视频 2
..从这一点上标签1的cmets当然是相同的 作为选项卡 2。
在创建新标签或类似的东西时是否有任何技巧来启动新会话?我对这一切都很陌生,所以可能显然很愚蠢..任何如何解决这个问题的指针都将不胜感激 - 即使它是实现评论的更好方法 - 必须在没有页面刷新的情况下添加 cmets .
问候,kitsu
【问题讨论】:
-
认为您可以添加隐藏字段。页面加载后,将其值设置为会话变量。并将您的 jquery 值指向隐藏字段而不是会话变量。