用PHP保护ASX文件

时间:2009-07-24 05:55:28

标签: php windows media asx

我的网站上只有会员区,用户可以登录并查看Windows Media流媒体内容。

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

有人能建议一种优雅的方式来保护ASX文件吗?

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

//$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
}

答案 1 :(得分:0)

我要做的是将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);

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

注意:SID常量计算为PHPSESSID=12345678(或者用户会话恰好是什么)