如何防止同时查看两个页面

时间:2013-11-24 16:43:44

标签: php session

我的媒体网站一旦会员成功登录就会创建会话

$_SESSION['login_id'] = $username;

我想知道如何防止会员同时看两个频道。

我的意思是,例如,如果成员正在查看页面video.php?id=4并在新标签页video.php?id=5中打开,则表明他必须在查看新页面之前关闭video.php?id=4页面。< / p>

我想到的第一件事是随机token key在页面退出时清除,但我不知道它是否好主意,是否有人知道如何做或有更好的主意! 〜谢谢

3 个答案:

答案 0 :(得分:2)

一开始想

您可以对php脚本使用请求,告诉您用户是否仍在打开网页。

为此你可以使用一个超时的ajax请求循环(例如使用jQuery)

提示:

您可以尝试加载微小图像(1px h / w)而不是制作请求,当然可以使用php脚本加载此图像(您可以使用htaccess欺骗网址), 因此,当请求图像时,您的PHP脚本将执行操作(设置当前观看的视频)然后提供图像(不要忘记设置正确的内容类型)

并以特定间隔继续加载图片(您需要生成网址令牌以避免缓存;)


第二种解决方案可能是

使用php脚本作为代理服务您的视频,就像您可以知道视频何时完全流式传输一样,然后如果用户请求第二个视频,知道他仍在流式传输前一个视频,则拒绝他的请求,告诉他一个适当的消息或你喜欢的方式:)

  

我想,使用第二种解决方案对您和访问者来说会更好,因为一旦第一个视频被完全缓存,他就可以开始缓存第二个视频

     

第一个解决方案将使用许多可能压倒网络或客户端和服务器端的请求


两个解决方案都不会跟踪使用多个浏览器的用户,这意味着他将拥有多个会话,除非用户已注册并登录

答案 1 :(得分:1)

if ($_SESSION['login_id'] = $username && COUNT($_GET['id'])>1 )

现在,在您检查了这种情况后,我不知道您可以做些什么来防止用户打开2个标签..

答案 2 :(得分:1)

只是我的想法

video has to stream, it pings the server以来。可以为session分配最后一个点击的视频。然后,一旦点击了一个新视频the session on the server will use the new video id,一旦第一个视频ping服务器并发现会话指向不同的页面,那么视频就会返回错误消息

另外,您可以为ID instance的每个form分配a hidden field with an ID,然后使用AJAX使用该ID ping服务器。如果用户在有活动ID时尝试请求相同的表单,则应显示错误消息。