【问题标题】:How to prevent viewing two pages in same time如何防止同时查看两个页面
【发布时间】:2013-11-24 16:43:44
【问题描述】:

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

$_SESSION['login_id'] = $username;

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

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

我想到的第一件事是随机的token key,它在页面退出时被清除,但我不知道这是否是个好主意,有没有人知道怎么做或有更好的主意! ~ 谢谢

【问题讨论】:

  • 您如何提供视频服务?直接流式传输还是使用 PHP 控制流式传输?

标签: php session


【解决方案1】:

最初的想法

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

为此,您可以使用超时 ajax 请求循环(例如使用 jQuery)

提示:

您可以尝试加载小图像(1px h/w)而不是发出请求,当然还可以使用 php 脚本加载此图像(您可以使用 htaccess 欺骗 url), 因此,当请求图像时,您的 php 脚本将完成任务(设置当前观看的视频)然后提供图像(不要忘记设置正确的内容类型)

并以一定的时间间隔继续加载图像(您需要生成 url 令牌以避免缓存;))


第二个解决方案可能是

使用 php 脚本作为代理来提供您的视频,这样您就可以知道视频何时已完全流式传输,然后如果用户请求第二个视频,知道他仍在流式传输前一个视频,您拒绝他的请求,向他展示适当的消息或随心所欲:)

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

第一种解决方案将使用许多请求,这可能会使网络或客户端和服务器端不堪重负


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

【讨论】:

    【解决方案2】:
    if ($_SESSION['login_id'] = $username && COUNT($_GET['id'])>1 )
    

    现在在你检查了这个条件之后,我不知道你能做些什么来阻止用户打开 2 个标签..

    【讨论】:

      【解决方案3】:

      只是我的想法

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

      或者,您可以为form 中的每个instance 分配一个ID a hidden field with an ID,然后使用AJAX ping 服务器那个身份证。如果用户在有活动 ID 时尝试请求相同的表单,它应该会显示一条错误消息。

      【讨论】:

        猜你喜欢
        • 2012-04-15
        • 1970-01-01
        • 2016-08-05
        • 1970-01-01
        • 1970-01-01
        • 2021-04-14
        • 1970-01-01
        • 2020-02-23
        • 2012-10-31
        相关资源
        最近更新 更多