2009-07-24 86 views
1

我在我的网站上有一个仅限会员的区域,用户可以登录并查看Windows Media流媒体内容。保护PHP中的ASX文件

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

任何人都可以提出一个优雅的方式来保护ASX文件?

回答

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); 

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

注意:该SID不断进行评估,以PHPSESSID=12345678(或任何该用户的会话恰好是)

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 
}