【问题标题】:Protecting an ASX file in PHP在 PHP 中保护 ASX 文件
【发布时间】:2009-07-24 14:35:57
【问题描述】:

我的网站上有一个仅限会员的区域,用户可以在其中登录和查看 Windows Media 流媒体内容。

我创建了一个 PHP 脚本来提供 ASX 文件,但是我无法使用会话信息对此进行验证。我认为这是因为 WMP 正在发出请求,而不是 php 页面。

谁能推荐一种保护 ASX 文件的优雅方法?

【问题讨论】:

    标签: php windows media asx


    【解决方案1】:

    我要做的是将 PHP 会话 ID 合并到 .asx 请求中。通常,此标识符存储在 cookie 中,并在每个页面请求时传递给 PHP。在这种情况下,WMP 不会同时发送 cookie,因此您无法知道请求是否经过身份验证。

    当您输出 ASX 文件的下载链接时,将会话标识符添加为 GET 变量:

    $download_link = "http://myserver.com/download_asx_file.php?"
    $download_link .= "f=$file_id&";
    $download_link .= htmlspecialchars(SID);
    

    现在,当您在 download_asx_file.php 顶部调用 session_start() 时,它应该会正确找到并加载您的会话,并允许您正常进行身份验证。

    注意:SID 常量被评估为PHPSESSID=12345678(或任何用户会话恰好是)

    【讨论】:

      【解决方案2】:

      你可以试试这个:

      //$user->isAuthenticated is only for ilustration, use whatever method you
      //use to check if the user is authenticated
      if($user->isAuthenticated()) {
            $asx = file_get_contents("/path/to/my/file.asx");
            header("Content-type: video/x-ms-asf");
            echo $asx;
      } else {
            //Tell the user that he can't view this asx
      }
      

      【讨论】:

        猜你喜欢
        • 2010-11-26
        • 1970-01-01
        • 1970-01-01
        • 2011-04-30
        • 1970-01-01
        • 2011-07-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多