1

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

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

任何人都可以提出一种保护 ASX 文件的优雅方法吗?

4

2 回答 2

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
}
于 2009-07-24T06:21:12.637 回答
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(或任何用户的会话恰好是)

于 2009-07-24T06:27:18.130 回答